A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
Find a file
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
.github Merge pull request #8925 from NixOS/dependabot/github_actions/cachix/install-nix-action-23 2023-09-05 20:37:26 +02:00
config
contrib
doc Allow dynamic derivation deps in inputDrvs 2023-09-07 10:39:37 -04:00
m4
maintainers
misc
mk
perl Allow dynamic derivation deps in inputDrvs 2023-09-07 10:39:37 -04:00
scripts
src Allow dynamic derivation deps in inputDrvs 2023-09-07 10:39:37 -04:00
tests Allow dynamic derivation deps in inputDrvs 2023-09-07 10:39:37 -04:00
.dir-locals.el
.editorconfig
.gitignore Merge pull request #8653 from hercules-ci/gitignore-.cache 2023-08-18 15:02:21 +02:00
.version Bump version 2023-07-24 21:30:33 +02:00
boehmgc-coroutine-sp-fallback.diff
bootstrap.sh
configure.ac
CONTRIBUTING.md add checklist to contribution guide 2023-09-05 14:08:40 +02:00
COPYING
default.nix GC root for fetched nixpkgs/lib content 2023-08-16 15:46:37 +02:00
docker.nix
flake.lock
flake.nix update system definitions 2023-08-23 19:28:24 +01:00
local.mk
Makefile
Makefile.config.in
precompiled-headers.h
README.md
shell.nix

Nix

Open Collective supporters Test

Nix is a powerful package manager for Linux and other Unix systems that makes package management reliable and reproducible. Please refer to the Nix manual for more details.

Installation

On Linux and macOS the easiest way to install Nix is to run the following shell command (as a user other than root):

$ curl -L https://nixos.org/nix/install | sh

Information on additional installation methods is available on the Nix download page.

Building And Developing

See our Hacking guide in our manual for instruction on how to to set up a development environment and build Nix from source.

Additional Resources

License

Nix is released under the LGPL v2.1.