summary refs log tree commit diff
path: root/nixos/modules/services/network-filesystems/ipfs.nix
diff options
context:
space:
mode:
authorKevin Cox <kevincox@kevincox.ca>2021-09-10 08:26:04 -0400
committerGitHub <noreply@github.com>2021-09-10 08:26:04 -0400
commita49a3d97acb5a54353abcf9624d046e80cebeeb1 (patch)
treed094b8155204f738936d292bb2fedd4bb6dca5bb /nixos/modules/services/network-filesystems/ipfs.nix
parentb09069382f47778e568675b62350b0ec3db6f138 (diff)
parentaf354d20497d68d104b84d888260ca60e66c6683 (diff)
downloadnixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar.gz
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar.bz2
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar.lz
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar.xz
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.tar.zst
nixpkgs-a49a3d97acb5a54353abcf9624d046e80cebeeb1.zip
Merge pull request #137113 from kevincox/ipfs-profile-fix
nixos.ipfs: Fix startup after unclean shutdown.
Diffstat (limited to 'nixos/modules/services/network-filesystems/ipfs.nix')
-rw-r--r--nixos/modules/services/network-filesystems/ipfs.nix18
1 files changed, 11 insertions, 7 deletions
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index cb6e8278b11..faa515835b6 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -12,6 +12,11 @@ let
     (optionalString (cfg.defaultMode == "norouting") "--routing=none")
   ] ++ cfg.extraFlags);
 
+  profile =
+    if cfg.localDiscovery
+    then "local-discovery"
+    else "server";
+
   splitMulitaddr = addrRaw: lib.tail (lib.splitString "/" addrRaw);
 
   multiaddrToListenStream = addrRaw:
@@ -236,14 +241,13 @@ in
       environment.IPFS_PATH = cfg.dataDir;
 
       preStart = ''
-        if [[ ! -f ${cfg.dataDir}/config ]]; then
-          ipfs init ${optionalString cfg.emptyRepo "-e"} \
-            ${optionalString (! cfg.localDiscovery) "--profile=server"}
+        if [[ ! -f "$IPFS_PATH/config" ]]; then
+          ipfs init ${optionalString cfg.emptyRepo "-e"} --profile=${profile}
         else
-          ${if cfg.localDiscovery
-            then "ipfs --offline config profile apply local-discovery"
-            else "ipfs --offline config profile apply server"
-          }
+          # After an unclean shutdown this file may exist which will cause the config command to attempt to talk to the daemon. This will hang forever if systemd is holding our sockets open.
+          rm -vf "$IPFS_PATH/api"
+
+          ipfs --offline config profile apply ${profile}
         fi
       '' + optionalString cfg.autoMount ''
         ipfs --offline config Mounts.FuseAllowOther --json true