mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-14 02:06:16 +02:00
print-dev-env: Avoid using unbound shellHook variable
Some tools which consume the "nix print-dev-env" rc script (such as "nix-direnv") are sensitive to the use of unbound variables. They use "set -u". The "nix print-dev-env" rc script initially unsets "shellHook", then loads variables from the derivation, and then evaluates "shellHook". However, most derivations don't have a "shellHook" attribute. So users get the error "shellHook: unbound variable". This can be demonstrated with the command: nix print-dev-env nixpkgs#hello | bash -u This commit changes the rc script to provide an empty fallback value for the "shellHook" variable. Closes: #7951 #8253
This commit is contained in:
parent
49cf090cb2
commit
e1131b5927
2 changed files with 3 additions and 3 deletions
|
@ -354,7 +354,7 @@ struct Common : InstallableCommand, MixProfile
|
||||||
for (auto & i : {"TMP", "TMPDIR", "TEMP", "TEMPDIR"})
|
for (auto & i : {"TMP", "TMPDIR", "TEMP", "TEMPDIR"})
|
||||||
out << fmt("export %s=\"$NIX_BUILD_TOP\"\n", i);
|
out << fmt("export %s=\"$NIX_BUILD_TOP\"\n", i);
|
||||||
|
|
||||||
out << "eval \"$shellHook\"\n";
|
out << "eval \"${shellHook:-}\"\n";
|
||||||
|
|
||||||
auto script = out.str();
|
auto script = out.str();
|
||||||
|
|
||||||
|
|
|
@ -118,10 +118,10 @@ diff $TEST_ROOT/dev-env{,2}.json
|
||||||
# Ensure `nix print-dev-env --json` contains variable assignments.
|
# Ensure `nix print-dev-env --json` contains variable assignments.
|
||||||
[[ $(jq -r .variables.arr1.value[2] $TEST_ROOT/dev-env.json) = '3 4' ]]
|
[[ $(jq -r .variables.arr1.value[2] $TEST_ROOT/dev-env.json) = '3 4' ]]
|
||||||
|
|
||||||
# Run tests involving `source <(nix print-dev-inv)` in subshells to avoid modifying the current
|
# Run tests involving `source <(nix print-dev-env)` in subshells to avoid modifying the current
|
||||||
# environment.
|
# environment.
|
||||||
|
|
||||||
set +u # FIXME: Make print-dev-env `set -u` compliant (issue #7951)
|
set -u
|
||||||
|
|
||||||
# Ensure `source <(nix print-dev-env)` modifies the environment.
|
# Ensure `source <(nix print-dev-env)` modifies the environment.
|
||||||
(
|
(
|
||||||
|
|
Loading…
Reference in a new issue