diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix index 104b5b92620e..d43147a16f31 100644 --- a/nixos/modules/services/network-filesystems/ipfs.nix +++ b/nixos/modules/services/network-filesystems/ipfs.nix @@ -67,6 +67,14 @@ in ''; }; + emptyRepo = mkOption { + type = types.bool; + default = false; + description = '' + If set to true, the repo won't be initialized with help files + ''; + }; + extraFlags = mkOption { type = types.listOf types.str; description = "Extra flags passed to the IPFS daemon"; @@ -103,16 +111,17 @@ in after = [ "network.target" "local-fs.target" ]; path = [ pkgs.ipfs pkgs.su pkgs.bash ]; - preStart = - '' - install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir} - if [[ ! -d ${cfg.dataDir}/.ipfs ]]; then - cd ${cfg.dataDir} - ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c "${ipfs}/bin/ipfs init" - fi - ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c "${ipfs}/bin/ipfs config Addresses.API ${cfg.apiAddress}" - ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c "${ipfs}/bin/ipfs config Addresses.Gateway ${cfg.gatewayAddress}" - ''; + preStart = '' + install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir} + if [[ ! -d ${cfg.dataDir}/.ipfs ]]; then + cd ${cfg.dataDir} + ${pkgs.su}/bin/su -s ${pkgs.bash}/bin/sh ${cfg.user} -c \ + "${ipfs}/bin/ipfs init ${if cfg.emptyRepo then "-e" else ""}" + 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.Gateway ${cfg.gatewayAddress}" + ''; serviceConfig = { ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags}";