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 24866b71c4 Introduce SingleDrvOutputs
In many cases we are dealing with a collection of realisations, they are
all outputs of the same derivation. In that case, we don't need
"derivation hashes modulos" to be part of our map key, because the
output names alone will be unique. Those hashes are still part of the
realisation proper, so we aren't loosing any information, we're just
"normalizing our schema" by narrowing the "primary key".

Besides making our data model a bit "tighter" this allows us to avoid a
double `for` loop in `DerivationGoal::waiteeDone`. The inner `for` loop
was previously just to select the output we cared about without knowing
its hash. Now we can just select the output by name directly.

Note that neither protocol is changed as part of this: we are still
transferring `DrvOutputs` over the wire for `BuildResult`s. I would only
consider revising this once #6223 is merged, and we can mention protocol
versions inside factored-out serialization logic. Until then it is
better not change anything because it would come a the cost of code
reuse.
2023-04-15 12:51:19 -04:00
.github Merge pull request #8153 from obsidiansystems/more-labeler 2023-04-11 12:10:34 +02:00
config
contrib
doc Merge pull request #7864 from obsidiansystems/quickstart-long-options 2023-04-14 09:13:16 -04:00
m4
maintainers
misc
mk
perl
scripts
src Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
tests Do not gate or hide experimental settings 2023-04-11 10:56:48 -04:00
.dir-locals.el
.editorconfig
.gitignore Single page for experimental feature descriptions 2023-04-09 11:01:23 -04:00
.version Bump version 2023-04-11 20:16:37 +02:00
boehmgc-coroutine-sp-fallback.diff Always disable GC in a coroutine unless the patch is applied 2023-04-07 14:54:38 +02:00
bootstrap.sh
configure.ac add check for librapidcheck 2023-04-08 22:29:43 +02:00
CONTRIBUTING.md
COPYING
default.nix
docker.nix
flake.lock
flake.nix fix failing configure in nix-tests 2023-04-09 02:33:53 +02: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.