Merge pull request #10200 from 9999years/fix-nix-eval-for-derivations

Fix `nix eval nixpkgs#bash` segfault
This commit is contained in:
tomberek 2024-03-11 13:56:49 -04:00 committed by GitHub
commit 25bf671015
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 24 additions and 2 deletions

View file

@ -0,0 +1,13 @@
---
synopsis: "`nix eval` prints derivations as `.drv` paths"
prs: 10200
---
`nix eval` will now print derivations as their `.drv` paths, rather than as
attribute sets. This makes commands like `nix eval nixpkgs#bash` terminate
instead of infinitely looping into recursive self-referential attributes:
```ShellSession
$ nix eval nixpkgs#bash
«derivation /nix/store/m32cbgbd598f4w299g0hwyv7gbw6rqcg-bash-5.2p26.drv»
```

View file

@ -120,8 +120,17 @@ struct CmdEval : MixJSON, InstallableValueCommand, MixReadOnlyOption
} }
else { else {
state->forceValueDeep(*v); logger->cout(
logger->cout("%s", ValuePrinter(*state, *v, PrintOptions { .force = true })); "%s",
ValuePrinter(
*state,
*v,
PrintOptions {
.force = true,
.derivationPaths = true
}
)
);
} }
} }
}; };