Variables affecting stdenv
initialisation
NIX_DEBUG
If 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.
buildInputs
A 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.
propagatedBuildInputs
Like 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
enableParallelBuilding
If set, stdenv
will pass specific
flags to make
and other build tools to enable
parallel building with up to build-cores
workers.
preferLocalBuild
If 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
passthru
This 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.