1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2024-09-19 10:50:24 -04:00

only set default values for nix-path if nothing else is set

TODO: this doesn't work yet.
we currently have no way of checking if a config value was set or not.

this is the expected behavior for default values:
new values should override them, not prepend.

the change fixes a logic bug introduced when fixing the previously confused
override mechanism in e062021314.
This commit is contained in:
Valentin Gagarin 2024-09-04 21:26:18 +02:00
parent 4c7a6ffee7
commit 4a920b46da
3 changed files with 8 additions and 1 deletions

View file

@ -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())));
}

View file

@ -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));

View file

@ -42,6 +42,12 @@ done
# finding something that's not in any of the default paths fails
( ! $(nix-instantiate --find-file test) )
# 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 ]]
echo "nix-path = test=$TEST_ROOT/from-nix-path-file" >> "$test_nix_conf"
# Use nix.conf in absence of NIX_PATH