Variables affecting stdenv
initialisation
NIX_DEBUGIf set, stdenv will print some
debug information during the build. In particular, the
gcc and ld wrapper scripts
will print out the complete command line passed to the wrapped
tools.
buildInputsA list of dependencies used by
stdenv to set up the environment for the build.
For each dependency dir, the directory
, if it
exists, is added to the dir/binPATH environment variable.
Other environment variables are also set up via a pluggable
mechanism. For instance, if buildInputs
contains Perl, then the lib/site_perl
subdirectory of each input is added to the PERL5LIB
environment variable. See Section 3.6, “Package setup hooks” for
details.
propagatedBuildInputsLike buildInputs, but these
dependencies are propagated: that is, the
dependencies listed here are added to the
buildInputs of any package that uses
this package as a dependency. So if package
Y has propagatedBuildInputs = [X], and package
Z has buildInputs = [Y], then package X will
appear in Z’s build environment automatically.
Variables affecting build properties
enableParallelBuildingIf set, stdenv will pass specific
flags to make and other build tools to enable
parallel building with up to build-cores
workers.
preferLocalBuildIf set, specifies that the package is so lightweight in terms of build operations (e.g. write a text file from a Nix string to the store) that there's no need to look for it in binary caches -- it's faster to just build it locally. It also tells Hydra and other facilities that this package doesn't need to be exported in binary caches (noone would use it, after all).
Special variables
passthruThis is an attribute set which can be filled with arbitrary values. For example:
passthru = {
foo = "bar";
baz = {
value1 = 4;
value2 = 5;
};
}
Values inside it are not passed to the builder, so you can change
them without triggering a rebuild. However, they can be accessed outside of a
derivation directly, as if they were set inside a derivation itself, e.g.
hello.baz.value1. We don't specify any usage or
schema of passthru - it is meant for values that would be
useful outside the derivation in other parts of a Nix expression (e.g. in other
derivations). An example would be to convey some specific dependency of your
derivation which contains a program with plugins support. Later, others who
make derivations with plugins can use passed-through dependency to ensure that
their plugin would be binary-compatible with built program.