@ -9,7 +9,10 @@ let
ipfsFlags = '' ${ if cfg . autoMigrate then " - - m i g r a t e " else " " } ${ if cfg . enableGC then " - - e n a b l e - g c " else " " } ${ toString cfg . extraFlags } '' ;
pathEnv = { IPFS_PATH = cfg . dataDir ; } ;
# Before Version 17.09, ipfs would always use "/var/lib/ipfs/.ipfs" as it's dataDir
defaultDataDir = if versionAtLeast config . system . stateVersion " 1 7 . 0 9 " then
" / v a r / l i b / i p f s " else
" / v a r / l i b / i p f s / . i p f s " ;
# 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 " i p f s " { buildInputs = [ makeWrapper ] ; } ''
@ -42,7 +45,7 @@ in
dataDir = mkOption {
type = types . str ;
default = " / v a r / l i b / i p f s " ;
default = defaultDataDir ;
description = " T h e d a t a d i r f o r I P F S " ;
} ;
@ -117,16 +120,15 @@ in
after = [ " l o c a l - f s . t a r g e t " ] ;
before = [ " i p f s . s e r v i c e " " i p f s - o f f l i n e . s e r v i c e " ] ;
environment . IPFS_PATH = cfg . dataDir ;
path = [ pkgs . ipfs pkgs . su pkgs . bash ] ;
preStart = ''
install - m 0755 - o $ { cfg . user } - g $ { cfg . group } - d $ { cfg . dataDir }
'' ;
environment = pathEnv ;
script = ''
if [ [ ! - d $ { cfg . dataDir } /.ipfs ] ] ; then
if [ [ ! - f $ { cfg . dataDir } /config ] ] ; then
$ { ipfs } /bin/ipfs init $ { optionalString cfg . emptyRepo " - e " }
fi
$ { ipfs } /bin/ipfs - - local config Addresses . API $ { cfg . apiAddress }
@ -151,9 +153,9 @@ in
conflicts = [ " i p f s - o f f l i n e . s e r v i c e " ] ;
wants = [ " i p f s - i n i t . s e r v i c e " ] ;
path = [ pkgs . ipfs ] ;
environment . IPFS_PATH = cfg . dataDir ;
environment = pathEnv ;
path = [ pkgs . ipfs ] ;
serviceConfig = {
ExecStart = " ${ ipfs } / b i n / i p f s d a e m o n ${ ipfsFlags } " ;
@ -172,9 +174,9 @@ in
conflicts = [ " i p f s . s e r v i c e " ] ;
wants = [ " i p f s - i n i t . s e r v i c e " ] ;
path = [ pkgs . ipfs ] ;
environment . IPFS_PATH = cfg . dataDir ;
environment = pathEnv ;
path = [ pkgs . ipfs ] ;
serviceConfig = {
ExecStart = " ${ ipfs } / b i n / i p f s d a e m o n ${ ipfsFlags } - - o f f l i n e " ;