Skip to content

Commit

Permalink
Handle the case where a parent of ~/.nix-defexpr is a symlink
Browse files Browse the repository at this point in the history
  • Loading branch information
edolstra committed Apr 3, 2024
1 parent 5536788 commit 09551fa
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/nix-env/nix-env.cc
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ static void getAllExprs(EvalState & state,
const SourcePath & path, StringSet & seen, BindingsBuilder & attrs)
{
StringSet namesSorted;
for (auto & [name, _] : path.readDirectory()) namesSorted.insert(name);
for (auto & [name, _] : path.resolveSymlinks().readDirectory()) namesSorted.insert(name);

for (auto & i : namesSorted) {
/* Ignore the manifest.nix used by profiles. This is
Expand Down
6 changes: 6 additions & 0 deletions tests/functional/user-envs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -189,3 +189,9 @@ nix-env --set $outPath10
[ "$(nix-store -q --resolve $profiles/test)" = $outPath10 ]
nix-env --set $drvPath10
[ "$(nix-store -q --resolve $profiles/test)" = $outPath10 ]

# Test the case where $HOME contains a symlink.
mkdir -p $TEST_ROOT/real-home/alice/.nix-defexpr/channels
ln -sfn $TEST_ROOT/real-home $TEST_ROOT/home
ln -sfn $(pwd)/user-envs.nix $TEST_ROOT/home/alice/.nix-defexpr/channels/foo
HOME=$TEST_ROOT/home/alice nix-env -i foo-0.1

0 comments on commit 09551fa

Please sign in to comment.