Merge pull request #22180 from mguentner/offline_ipfs
services: ipfs: separate system units, add offline mode
This commit is contained in:
commit
f96c3f1844
@ -104,30 +104,72 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.ipfs = {
|
systemd.services.ipfs-init = {
|
||||||
description = "IPFS Daemon";
|
description = "IPFS Initializer";
|
||||||
|
|
||||||
|
after = [ "local-fs.target" ];
|
||||||
|
before = [ "ipfs.service" "ipfs-offline.service" ];
|
||||||
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "network.target" "local-fs.target" ];
|
|
||||||
path = [ pkgs.ipfs pkgs.su pkgs.bash ];
|
path = [ pkgs.ipfs pkgs.su pkgs.bash ];
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
|
install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
|
||||||
|
'';
|
||||||
|
|
||||||
|
script = ''
|
||||||
if [[ ! -d ${cfg.dataDir}/.ipfs ]]; then
|
if [[ ! -d ${cfg.dataDir}/.ipfs ]]; then
|
||||||
cd ${cfg.dataDir}
|
cd ${cfg.dataDir}
|
||||||
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c \
|
${ipfs}/bin/ipfs init ${optionalString cfg.emptyRepo "-e"}
|
||||||
"${ipfs}/bin/ipfs init ${if cfg.emptyRepo then "-e" else ""}"
|
|
||||||
fi
|
fi
|
||||||
${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c \
|
${ipfs}/bin/ipfs --local config Addresses.API ${cfg.apiAddress}
|
||||||
"${ipfs}/bin/ipfs --local config Addresses.API ${cfg.apiAddress} && \
|
${ipfs}/bin/ipfs --local config Addresses.Gateway ${cfg.gatewayAddress}
|
||||||
${ipfs}/bin/ipfs --local config Addresses.Gateway ${cfg.gatewayAddress}"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
PermissionsStartOnly = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.ipfs = {
|
||||||
|
description = "IPFS Daemon";
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" "local-fs.target" "ipfs-init.service" ];
|
||||||
|
|
||||||
|
conflicts = [ "ipfs-offline.service" ];
|
||||||
|
wants = [ "ipfs-init.service" ];
|
||||||
|
|
||||||
|
path = [ pkgs.ipfs ];
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags}";
|
ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags}";
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
PermissionsStartOnly = true;
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.ipfs-offline = {
|
||||||
|
description = "IPFS Daemon (offline mode)";
|
||||||
|
|
||||||
|
after = [ "local-fs.target" "ipfs-init.service" ];
|
||||||
|
|
||||||
|
conflicts = [ "ipfs.service" ];
|
||||||
|
wants = [ "ipfs-init.service" ];
|
||||||
|
|
||||||
|
path = [ pkgs.ipfs ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags} --offline";
|
||||||
|
User = cfg.user;
|
||||||
|
Group = cfg.group;
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user