diff --git a/src/libexpr/eval-gc.cc b/src/libexpr/eval-gc.cc index 07ce05a2c73..de0b53865f1 100644 --- a/src/libexpr/eval-gc.cc +++ b/src/libexpr/eval-gc.cc @@ -101,7 +101,7 @@ void initGC() #endif // NIX_PATH must override the regular setting - // See the comment in applyConfig + // See the XXX comment in `applyConfig()` if (auto nixPathEnv = getEnv("NIX_PATH")) { globalConfig.set("nix-path", concatStringsSep(" ", EvalSettings::parseNixPath(nixPathEnv.value()))); } diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 2420f15c19a..345acb6d25d 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -341,6 +341,7 @@ EvalState::EvalState( for (auto & i : settings.nixPath.get()) { lookupPath.elements.emplace_back(LookupPath::Elem::parse(i)); } + // TODO: only set if nothing else is if (!settings.restrictEval) { for (auto & i : EvalSettings::getDefaultNixPath()) { lookupPath.elements.emplace_back(LookupPath::Elem::parse(i)); diff --git a/tests/functional/nix_path.sh b/tests/functional/nix_path.sh index 90cba1f0c9c..51d22967f49 100755 --- a/tests/functional/nix_path.sh +++ b/tests/functional/nix_path.sh @@ -42,6 +42,19 @@ done # finding something that's not in any of the default paths fails ( ! $(nix-instantiate --find-file test) ) +# XXX: we can't manipulate $NIX_STATE_DIR contents on NixOS +# TODO: port to NixOS somehow; ideally we'd run the test suite in a non-NixOS VM +if [[ ! isTestOnNixOS ]]; then + mkdir -p $NIX_STATE_DIR/profiles/per-user/root/channels/nixpkgs + # check that the default values are set + [[ $(nix-instantiate --eval -E 'with builtins; length nixPath') = 2 ]] + # setting anything overrides the default paths + # this ensures we can force an empty search path + [[ $(NIX_PATH= nix-instantiate --eval -E 'with builtins; length nixPath') = 0 ]] + [[ $(nix-instantiate --nix-path "" --eval -E 'with builtins; length nixPath') = 0 ]] + [[ $(nix-instantiate -I "" --eval -E 'with builtins; length nixPath') = 1 ]] +fi + echo "nix-path = test=$TEST_ROOT/from-nix-path-file" >> "$test_nix_conf" # Use nix.conf in absence of NIX_PATH