1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-11-13 14:02:42 +01:00

Merge pull request #13952 from NixOS/mergify/bp/2.31-maintenance/pr-13939

Pass `dir` in extraAttrs when overriding the registry (backport #13939)
This commit is contained in:
Sergei Zimmerman 2025-09-09 19:09:29 +00:00 committed by GitHub
commit 489fad878b
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) { for (auto & [inputName, input] : flake.lockFile.root->inputs) {
auto input2 = flake.lockFile.findInput({inputName}); // resolve 'follows' nodes auto input2 = flake.lockFile.findInput({inputName}); // resolve 'follows' nodes
if (auto input3 = std::dynamic_pointer_cast<const flake::LockedNode>(input2)) { 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( overrideRegistry(
fetchers::Input::fromAttrs(fetchSettings, {{"type", "indirect"}, {"id", inputName}}), fetchers::Input::fromAttrs(fetchSettings, {{"type", "indirect"}, {"id", inputName}}),
input3->lockedRef.input, input3->lockedRef.input,
{}); extraAttrs);
} }
} }
}}, }},

View file

@ -472,12 +472,12 @@ EOF
[[ "$(nix flake metadata --json "$flake3Dir" | jq -r .locks.nodes.flake1.locked.rev)" = $prevFlake1Rev ]] [[ "$(nix flake metadata --json "$flake3Dir" | jq -r .locks.nodes.flake1.locked.rev)" = $prevFlake1Rev ]]
baseDir=$TEST_ROOT/$RANDOM baseDir=$TEST_ROOT/$RANDOM
subdirFlakeDir=$baseDir/foo subdirFlakeDir1=$baseDir/foo1
mkdir -p "$subdirFlakeDir" mkdir -p "$subdirFlakeDir1"
writeSimpleFlake "$baseDir" writeSimpleFlake "$baseDir"
cat > "$subdirFlakeDir"/flake.nix <<EOF cat > "$subdirFlakeDir1"/flake.nix <<EOF
{ {
outputs = inputs: { outputs = inputs: {
shouldBeOne = 1; shouldBeOne = 1;
@ -485,5 +485,18 @@ cat > "$subdirFlakeDir"/flake.nix <<EOF
} }
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 ]] [[ "$(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 ]]