Skip to content

Commit a97c5df

Browse files
authored
Merge pull request #13939 from DeterminateSystems/fix-inputs-from-ignoring-dir-param-upstreaming
Pass `dir` in extraAttrs when overriding the registry
2 parents 371623b + 38663fb commit a97c5df

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

src/libcmd/installables.cc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,16 @@ MixFlakeOptions::MixFlakeOptions()
178178
for (auto & [inputName, input] : flake.lockFile.root->inputs) {
179179
auto input2 = flake.lockFile.findInput({inputName}); // resolve 'follows' nodes
180180
if (auto input3 = std::dynamic_pointer_cast<const flake::LockedNode>(input2)) {
181+
fetchers::Attrs extraAttrs;
182+
183+
if (!input3->lockedRef.subdir.empty()) {
184+
extraAttrs["dir"] = input3->lockedRef.subdir;
185+
}
186+
181187
overrideRegistry(
182188
fetchers::Input::fromAttrs(fetchSettings, {{"type", "indirect"}, {"id", inputName}}),
183189
input3->lockedRef.input,
184-
{});
190+
extraAttrs);
185191
}
186192
}
187193
}},

tests/functional/flakes/flakes.sh

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -472,18 +472,31 @@ EOF
472472
[[ "$(nix flake metadata --json "$flake3Dir" | jq -r .locks.nodes.flake1.locked.rev)" = $prevFlake1Rev ]]
473473

474474
baseDir=$TEST_ROOT/$RANDOM
475-
subdirFlakeDir=$baseDir/foo
476-
mkdir -p "$subdirFlakeDir"
475+
subdirFlakeDir1=$baseDir/foo1
476+
mkdir -p "$subdirFlakeDir1"
477477

478478
writeSimpleFlake "$baseDir"
479479

480-
cat > "$subdirFlakeDir"/flake.nix <<EOF
480+
cat > "$subdirFlakeDir1"/flake.nix <<EOF
481481
{
482482
outputs = inputs: {
483483
shouldBeOne = 1;
484484
};
485485
}
486486
EOF
487487

488-
nix registry add --registry "$registry" flake2 "path:$baseDir?dir=foo"
488+
nix registry add --registry "$registry" flake2 "path:$baseDir?dir=foo1"
489489
[[ "$(nix eval --flake-registry "$registry" flake2#shouldBeOne)" = 1 ]]
490+
491+
subdirFlakeDir2=$baseDir/foo2
492+
mkdir -p "$subdirFlakeDir2"
493+
cat > "$subdirFlakeDir2"/flake.nix <<EOF
494+
{
495+
inputs.foo1.url = "path:$baseDir?dir=foo1";
496+
497+
outputs = inputs: { };
498+
}
499+
EOF
500+
501+
# Regression test for https://github.com/NixOS/nix/issues/13918
502+
[[ "$(nix eval --inputs-from "$subdirFlakeDir2" foo1#shouldBeOne)" = 1 ]]

0 commit comments

Comments
 (0)