about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--scripts/nix-channel.in3
-rw-r--r--scripts/nix-pull.in6
-rw-r--r--tests/init.sh6
3 files changed, 9 insertions, 6 deletions
diff --git a/scripts/nix-channel.in b/scripts/nix-channel.in
index 8faee0b0e572..db5d35c6eba1 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 856ee80fa9c8..bb041f0a6841 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 bcff1e240dc5..0639a70662cd 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 <<EOF
 gc-keep-outputs = false
 gc-keep-derivations = false