diff options
author | Rebecca Turner <rbt@sent.as> | 2024-03-08 21:43:54 -0800 |
---|---|---|
committer | Jade Lovelace <lix@jade.fyi> | 2024-03-08 23:46:16 -0800 |
commit | 6ef9d8efbadd6eee4a9ebf8ae0835c03989b6c3c (patch) | |
tree | 24864fb5aa98cc33ff5bfadf3af755ebfb0dd321 | |
parent | 609a8e0d94926cae460ed6f12f1f8a3d9f91246b (diff) |
Print derivation paths in `nix eval`
`nix eval` forces values and prints derivations as attribute sets, so
commands that print derivations (e.g. `nix eval nixpkgs#bash`) will
infinitely loop and segfault.
Printing derivations as `.drv` paths makes `nix eval` complete as
expected. Further work is needed, but this is better than a segfault.
(cherry picked from commit 4910d74086a85876e093136a0e8ebc547b467af7)
Change-Id: I8e1cb39c05db812080759ec183ee7a131760e6ea
-rw-r--r-- | src/nix/eval.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/nix/eval.cc b/src/nix/eval.cc index 3dcc483fa..243705587 100644 --- a/src/nix/eval.cc +++ b/src/nix/eval.cc @@ -120,8 +120,17 @@ struct CmdEval : MixJSON, InstallableValueCommand, MixReadOnlyOption } else { - state->forceValueDeep(*v); - logger->cout("%s", ValuePrinter(*state, *v, PrintOptions { .force = true })); + logger->cout( + "%s", + ValuePrinter( + *state, + *v, + PrintOptions { + .force = true, + .derivationPaths = true + } + ) + ); } } }; |