lix/src/nix
John Ericson 7ad66cb3ef Allow dynamic derivation deps in inputDrvs
We use the same nested map representation we used for goals, again in
order to save space. We might someday want to combine with `inputDrvs`,
by doing `V = bool` instead of `V = std::set<OutputName>`, but we are
not doing that yet for sake of a smaller diff.

The ATerm format for Derivations also needs to be extended, in addition
to the in-memory format. To accomodate this, we added a new basic
versioning scheme, so old versions of Nix will get nice errors. (And
going forward, if the ATerm format changes again the errors will be even
better.)

`parsedStrings`, an internal function used as part of parsing
derivations in A-Term format, used to consume the final `]` but expect
the initial `[` to already be consumed. This made for what looked like
unbalanced brackets at callsites, which was confusing. Now it consumes
both which is hopefully less confusing.

As part of testing, we also created a unit test for the A-Term format for
regular non-experimental derivations too.

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Co-authored-by: Valentin Gagarin <valentin.gagarin@tweag.io>

Apply suggestions from code review

Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
2023-09-07 10:39:37 -04:00
..
realisation fix spelling mistakes reported by Debian's lintian tool 2022-01-30 10:51:39 +02:00
add-file.md Split 'nix store add-to-store' into 'add-path' and 'add-file' 2020-12-04 00:59:24 +01:00
add-path.md Split 'nix store add-to-store' into 'add-path' and 'add-file' 2020-12-04 00:59:24 +01:00
add-to-store.cc Simplify ContentAddress 2023-07-07 07:30:01 -04:00
app.cc Allow dynamic derivation deps in inputDrvs 2023-09-07 10:39:37 -04:00
build.cc Make the Derived Path family of types inductive for dynamic derivations 2023-08-10 00:08:32 -04:00
build.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
bundle.cc Fixing #7479 2023-08-18 11:44:00 -04:00
bundle.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
cat.cc nix store cat: Use writeFull() 2023-03-02 14:51:14 +01:00
copy.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
copy.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
daemon.cc Port the flags of nix-daemon to nix daemon (#8788) 2023-08-28 13:43:34 +00:00
daemon.md Port the flags of nix-daemon to nix daemon (#8788) 2023-08-28 13:43:34 +00:00
derivation-add.cc Create nix derivation add command 2023-04-07 08:34:58 -04:00
derivation-add.md Create nix derivation add command 2023-04-07 08:34:58 -04:00
derivation-show.cc Rename files to reflect new nix derivation show name 2023-04-07 08:34:58 -04:00
derivation-show.md Create nix derivation add command 2023-04-07 08:34:58 -04:00
derivation.cc nix show-derivation -> nix derivation show 2023-04-07 08:34:58 -04:00
develop.cc Fixing #7479 2023-08-18 11:44:00 -04:00
develop.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
diff-closures.cc Get rid of some unchecked calls to std::cout 2023-03-02 15:02:24 +01:00
diff-closures.md Add 'nix store diff-closures' manpage 2020-12-21 13:32:29 +01:00
doctor.cc Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
dump-path.cc Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
edit.cc Move value-only methods to InstallableValue 2023-03-16 20:06:46 -04:00
edit.md nix edit: support kakoune 2022-03-22 23:18:02 +09:00
eval.cc Merge remote-tracking branch 'origin/master' into source-path 2023-04-24 13:20:36 +02:00
eval.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
flake-archive.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-check.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
flake-clone.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-init.md Update docs 2022-02-22 14:32:56 +01:00
flake-lock.md nix flake update: Recreate the lock file 2021-02-26 14:55:54 +01:00
flake-metadata.md Merge 'nix flake {info,list-inputs}' into 'nix flake metadata' 2021-03-16 17:19:04 +01:00
flake-new.md Add 'nix flake' manpages 2020-12-23 18:26:40 +01:00
flake-prefetch.md nix store prefetch-tarball -> nix flake prefetch 2021-01-11 12:36:39 +01:00
flake-show.md Update docs 2022-02-22 14:32:56 +01:00
flake-update.md Trivial changes from the lazy-trees branch 2022-12-07 14:06:34 +01:00
flake.cc Fixing #7479 2023-08-18 11:44:00 -04:00
flake.md Document the path flakeref format (#8640) 2023-07-04 08:39:08 +00:00
fmt.cc Move value-only methods to InstallableValue 2023-03-16 20:06:46 -04:00
fmt.md nix-fmt: add command 2022-03-11 10:00:19 -05:00
get-env.sh nix develop: Ignore some more bash special variables 2022-08-23 14:57:08 +02:00
hash.cc Merge pull request #7750 from obsidiansystems/no-args-prepare 2023-03-15 17:23:40 -04:00
help-stores.md Tweaks 2023-03-23 15:32:59 +01:00
help.md Add 'nix help' manpage 2020-12-21 13:32:29 +01:00
key-convert-secret-to-public.md Add commands for generating secret/public keys 2021-01-06 17:49:31 +01:00
key-generate-secret.md Fix missing ` in key manual 2022-06-08 11:46:50 +02:00
local.mk Dedup some markdown -> C++ big literal stuff in build system 2023-05-15 10:38:11 -04:00
log.cc Make the Derived Path family of types inductive for dynamic derivations 2023-08-10 00:08:32 -04:00
log.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
ls.cc Get rid of some unchecked calls to std::cout 2023-03-02 15:02:24 +01:00
main.cc Create outputOf primop. 2023-08-14 09:37:37 -04:00
make-content-addressed.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
make-content-addressed.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
nar-cat.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nar-dump-path.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nar-ls.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
nar.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
nar.md Add 'nix nar' manpages 2020-12-21 13:32:28 +01:00
nix.md Fix some grammar in installables doc (#8682) 2023-07-10 09:33:04 +00:00
optimise-store.cc Add 'nix store optimise' manpage 2020-12-21 13:32:28 +01:00
optimise-store.md Add 'nix store optimise' manpage 2020-12-21 13:32:28 +01:00
path-from-hash-part.cc Add command 'nix store path-from-hash-part' 2022-10-18 16:51:12 +02:00
path-from-hash-part.md Add command 'nix store path-from-hash-part' 2022-10-18 16:51:12 +02:00
path-info.cc Replace src/libutil/json.cc with nlohmann json generation 2022-11-16 16:50:50 +01:00
path-info.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
ping-store.cc Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
ping-store.md Tweak 2021-01-17 19:49:28 +01:00
prefetch.cc Simplify ContentAddress 2023-07-07 07:30:01 -04:00
print-dev-env.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
profile-diff-closures.md Add 'nix profile' manpage 2020-12-21 13:32:29 +01:00
profile-history.md nix profile history: Show profile date 2021-09-14 20:47:33 +02:00
profile-install.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
profile-list.md nix profile list: Improve readability of the output 2023-07-02 16:17:09 +02:00
profile-remove.md man: fix formatting of nix3-profile-remove 2021-06-28 16:27:03 +02:00
profile-rollback.md Generations -> profile versions 2021-09-14 19:57:45 +02:00
profile-upgrade.md Trivial changes from the lazy-trees branch 2022-12-07 14:06:34 +01:00
profile-wipe-history.md Add 'nix profile wipe-history' command 2021-09-14 20:35:41 +02:00
profile.cc Simplify ContentAddress 2023-07-07 07:30:01 -04:00
profile.md Dedup some markdown -> C++ big literal stuff in build system 2023-05-15 10:38:11 -04:00
realisation.cc Move enabled experimental feature to libutil struct 2023-03-20 11:05:22 -04:00
registry-add.md nix registry: add --registry flag 2021-06-30 22:13:32 +03:00
registry-list.md Add 'nix registry' manpages 2020-12-21 13:32:27 +01:00
registry-pin.md Style tweaks 2021-07-07 10:02:55 +02:00
registry-remove.md nix registry: add --registry flag 2021-06-30 22:13:32 +03:00
registry.cc Move enabled experimental feature to libutil struct 2023-03-20 11:05:22 -04:00
registry.md doc: Fix typo 2022-06-28 22:43:37 -04:00
repl.cc Move evaluator settings (type and global) to separate file/header 2023-07-31 10:14:15 -04:00
repl.md Fix typo -- dashes not underscores 2022-10-17 14:15:32 -06:00
run.cc Move value-only methods to InstallableValue 2023-03-16 20:06:46 -04:00
run.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
run.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
search.cc Move evaluator settings (type and global) to separate file/header 2023-07-31 10:14:15 -04:00
search.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
shell.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
show-config.cc nix/show-config: allow getting the value of a specific setting 2023-01-12 13:56:35 -08:00
sigs.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
store-cat.md Add 'nix store' NAR-related manpages 2020-12-21 13:32:28 +01:00
store-copy-log.cc Fix misrendering of 'nix store --help' 2023-03-21 12:02:19 +01:00
store-copy-log.md link "store derivation" to glossary definition 2022-12-21 11:42:50 +01:00
store-delete.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
store-delete.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
store-dump-path.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
store-gc.cc Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
store-gc.md Add 'nix store gc' command 2021-01-10 23:29:14 +01:00
store-ls.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
store-prefetch-file.md Fix some typos 2021-03-26 16:14:38 +01:00
store-repair.cc Make command infra less stateful and more regular 2023-03-15 16:29:07 -04:00
store-repair.md clarify definition of "installable" 2023-03-05 01:46:17 +01:00
store.cc Move store docs to 'nix help-stores' 2023-03-21 14:37:09 +01:00
upgrade-nix.cc Move evaluator settings (type and global) to separate file/header 2023-07-31 10:14:15 -04:00
upgrade-nix.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
verify.cc Avoid some StorePath <-> Path round trips 2023-01-30 09:37:57 -05:00
verify.md Also use long options in src/nix/*.md 2023-05-17 08:10:30 +01:00
why-depends.cc nix/why-depends: fix output of --precise 2023-08-04 23:11:08 +02:00
why-depends.md Add 'nix why-depends' manpage 2020-12-21 13:32:28 +01:00