Allow paths in flake local settings

Fix #5505
This commit is contained in:
regnat 2021-11-12 16:28:39 +01:00
parent c260640dec
commit ab902521b1
2 changed files with 16 additions and 2 deletions

View file

@ -251,6 +251,10 @@ static Flake getFlake(
forceTrivialValue(state, *setting.value, *setting.pos); forceTrivialValue(state, *setting.value, *setting.pos);
if (setting.value->type() == nString) if (setting.value->type() == nString)
flake.config.settings.insert({setting.name, state.forceStringNoCtx(*setting.value, *setting.pos)}); flake.config.settings.insert({setting.name, state.forceStringNoCtx(*setting.value, *setting.pos)});
else if (setting.value->type() == nPath) {
PathSet emptyContext = {};
flake.config.settings.insert({setting.name, state.coerceToString(*setting.pos, *setting.value, emptyContext, false, true, true)});
}
else if (setting.value->type() == nInt) else if (setting.value->type() == nInt)
flake.config.settings.insert({setting.name, state.forceInt(*setting.value, *setting.pos)}); flake.config.settings.insert({setting.name, state.forceInt(*setting.value, *setting.pos)});
else if (setting.value->type() == nBool) else if (setting.value->type() == nBool)

View file

@ -11,13 +11,13 @@ rm -f post-hook-ran
cat <<EOF > echoing-post-hook.sh cat <<EOF > echoing-post-hook.sh
#!/bin/sh #!/bin/sh
echo "ThePostHookRan" > $PWD/post-hook-ran echo "ThePostHookRan as \$0" > $PWD/post-hook-ran
EOF EOF
chmod +x echoing-post-hook.sh chmod +x echoing-post-hook.sh
cat <<EOF > flake.nix cat <<EOF > flake.nix
{ {
nixConfig.post-build-hook = "$PWD/echoing-post-hook.sh"; nixConfig.post-build-hook = ./echoing-post-hook.sh;
nixConfig.allow-dirty = false; # See #5621 nixConfig.allow-dirty = false; # See #5621
outputs = a: { outputs = a: {
@ -33,3 +33,13 @@ clearStore
nix build --accept-flake-config nix build --accept-flake-config
test -f post-hook-ran || fail "The post hook should have ran" test -f post-hook-ran || fail "The post hook should have ran"
# Make sure that the path to the post hook doesnt change if we change
# something in the flake.
# Otherwise the user would have to re-validate the setting each time.
mv post-hook-ran previous-post-hook-run
echo "# Dummy comment" >> flake.nix
clearStore
nix build --accept-flake-config
diff -q post-hook-ran previous-post-hook-run || \
fail "Both post hook runs should report the same filename"