From af354d20497d68d104b84d888260ca60e66c6683 Mon Sep 17 00:00:00 2001 From: Kevin Cox Date: Wed, 8 Sep 2021 10:50:36 -0400 Subject: [PATCH] nixos.ipfs: Fix startup after unclean shutdown. Fixes https://github.com/NixOS/nixpkgs/issues/135684 --- .../services/network-filesystems/ipfs.nix | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix index 57f5f6b006c8..3a01c06edc3b 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