summary refs log tree commit diff
diff options
context:
space:
mode:
authorJörg Thalheim <Mic92@users.noreply.github.com>2017-05-10 07:19:23 +0100
committerGitHub <noreply@github.com>2017-05-10 07:19:23 +0100
commit7b211da119589fa5d2889a0e399f208ba56149d3 (patch)
treea915a155a489410a6e6a56c53a98e1e218b20d7b
parentc6c7197c7dc5355ff587da9996330bb72afcb8f7 (diff)
parent91ee3530a721b51fff72ddedea41172aab08b151 (diff)
downloadnixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar.gz
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar.bz2
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar.lz
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar.xz
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.tar.zst
nixpkgs-7b211da119589fa5d2889a0e399f208ba56149d3.zip
Merge pull request #25531 from Infinisil/fix/ipfs-dataDir
ipfs service: Fix dataDir being ignored
-rw-r--r--nixos/modules/services/network-filesystems/ipfs.nix18
1 files changed, 15 insertions, 3 deletions
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index e6e04248854..bd46147c6bc 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -3,12 +3,19 @@
 with lib;
 
 let
-  inherit (pkgs) ipfs;
+  inherit (pkgs) ipfs runCommand makeWrapper;
 
   cfg = config.services.ipfs;
 
   ipfsFlags = ''${if cfg.autoMigrate then "--migrate" else ""} ${if cfg.enableGC then "--enable-gc" else ""} ${toString cfg.extraFlags}'';
 
+  pathEnv = { IPFS_PATH = cfg.dataDir; };
+
+  # Wrapping the ipfs binary with the environment variable IPFS_PATH set to dataDir because we can't set it in the user environment
+  wrapped = runCommand "ipfs" { buildInputs = [ makeWrapper ]; } ''
+    mkdir -p "$out/bin"
+    makeWrapper "${ipfs}/bin/ipfs" "$out/bin/ipfs" --set IPFS_PATH ${cfg.dataDir}
+  '';
 in
 
 {
@@ -86,7 +93,7 @@ in
   ###### implementation
 
   config = mkIf cfg.enable {
-    environment.systemPackages = [ pkgs.ipfs ];
+    environment.systemPackages = [ wrapped ];
 
     users.extraUsers = mkIf (cfg.user == "ipfs") {
       ipfs = {
@@ -116,9 +123,10 @@ in
         install -m 0755 -o ${cfg.user} -g ${cfg.group} -d ${cfg.dataDir}
       '';
 
+      environment = pathEnv;
+
       script =  ''
         if [[ ! -d ${cfg.dataDir}/.ipfs ]]; then
-          cd ${cfg.dataDir}
           ${ipfs}/bin/ipfs init ${optionalString cfg.emptyRepo "-e"}
         fi
         ${ipfs}/bin/ipfs --local config Addresses.API ${cfg.apiAddress}
@@ -145,6 +153,8 @@ in
 
       path  = [ pkgs.ipfs ];
 
+      environment = pathEnv;
+
       serviceConfig = {
         ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags}";
         User = cfg.user;
@@ -164,6 +174,8 @@ in
 
       path  = [ pkgs.ipfs ];
 
+      environment = pathEnv;
+
       serviceConfig = {
         ExecStart = "${ipfs}/bin/ipfs daemon ${ipfsFlags} --offline";
         User = cfg.user;