1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-09 03:56:01 +01:00

Merge pull request #13939 from DeterminateSystems/fix-inputs-from-ignoring-dir-param-upstreaming

Pass `dir` in extraAttrs when overriding the registry
This commit is contained in:
Eelco Dolstra 2025-09-09 09:36:33 +02:00 committed by GitHub
commit a97c5df47c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 5 deletions

View file

@ -178,10 +178,16 @@ MixFlakeOptions::MixFlakeOptions()
for (auto & [inputName, input] : flake.lockFile.root->inputs) {
auto input2 = flake.lockFile.findInput({inputName}); // resolve 'follows' nodes
if (auto input3 = std::dynamic_pointer_cast<const flake::LockedNode>(input2)) {
fetchers::Attrs extraAttrs;
if (!input3->lockedRef.subdir.empty()) {
extraAttrs["dir"] = input3->lockedRef.subdir;
}
overrideRegistry(
fetchers::Input::fromAttrs(fetchSettings, {{"type", "indirect"}, {"id", inputName}}),
input3->lockedRef.input,
{});
extraAttrs);
}
}
}},

View file

@ -472,12 +472,12 @@ EOF
[[ "$(nix flake metadata --json "$flake3Dir" | jq -r .locks.nodes.flake1.locked.rev)" = $prevFlake1Rev ]]
baseDir=$TEST_ROOT/$RANDOM
subdirFlakeDir=$baseDir/foo
mkdir -p "$subdirFlakeDir"
subdirFlakeDir1=$baseDir/foo1
mkdir -p "$subdirFlakeDir1"
writeSimpleFlake "$baseDir"
cat > "$subdirFlakeDir"/flake.nix <<EOF
cat > "$subdirFlakeDir1"/flake.nix <<EOF
{
outputs = inputs: {
shouldBeOne = 1;
@ -485,5 +485,18 @@ cat > "$subdirFlakeDir"/flake.nix <<EOF
}
EOF
nix registry add --registry "$registry" flake2 "path:$baseDir?dir=foo"
nix registry add --registry "$registry" flake2 "path:$baseDir?dir=foo1"
[[ "$(nix eval --flake-registry "$registry" flake2#shouldBeOne)" = 1 ]]
subdirFlakeDir2=$baseDir/foo2
mkdir -p "$subdirFlakeDir2"
cat > "$subdirFlakeDir2"/flake.nix <<EOF
{
inputs.foo1.url = "path:$baseDir?dir=foo1";
outputs = inputs: { };
}
EOF
# Regression test for https://github.com/NixOS/nix/issues/13918
[[ "$(nix eval --inputs-from "$subdirFlakeDir2" foo1#shouldBeOne)" = 1 ]]