diff --git a/scripts/nix-channel.in b/scripts/nix-channel.in index 8faee0b0e5..db5d35c6eb 100644 --- a/scripts/nix-channel.in +++ b/scripts/nix-channel.in @@ -78,6 +78,9 @@ sub removeChannel { sub update { readChannels; + # Create the manifests directory if it doesn't exist. + mkdir "$stateDir/manifests", 0755 unless -e "$stateDir/manifests"; + # Do we have write permission to the manifests directory? If not, # then just skip pulling the manifest and just download the Nix # expressions. If the user is a non-privileged user in a diff --git a/scripts/nix-pull.in b/scripts/nix-pull.in index 856ee80fa9..bb041f0a68 100644 --- a/scripts/nix-pull.in +++ b/scripts/nix-pull.in @@ -18,6 +18,12 @@ my $manifestDir = ($ENV{"NIX_MANIFESTS_DIR"} or "$stateDir/manifests"); umask 0022; +# Create the manifests directory if it doesn't exist. +if (! -e $manifestDir) { + mkdir $manifestDir, 0755 or die "cannot create directory `$manifestDir'"; +} + + # Process the URLs specified on the command line. my %narFiles; my %localPaths; diff --git a/tests/init.sh b/tests/init.sh index bcff1e240d..0639a70662 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -36,12 +36,6 @@ ln -s $TOP/scripts/copy-from-other-stores.pl $NIX_BIN_DIR/nix/ ln -s $TOP/scripts/download-using-manifests.pl $NIX_BIN_DIR/nix/ ln -s $TOP/scripts/readmanifest.pm $NIX_BIN_DIR/nix/ -mkdir -p "$NIX_STATE_DIR"/manifests -mkdir -p "$NIX_STATE_DIR"/gcroots -mkdir -p "$NIX_STATE_DIR"/temproots -mkdir -p "$NIX_STATE_DIR"/profiles -ln -s "$NIX_STATE_DIR"/profiles "$NIX_STATE_DIR"/gcroots/ - cat > "$NIX_CONF_DIR"/nix.conf <