mirror of
https://github.com/privatevoid-net/nix-super.git
synced 2024-11-22 14:06:16 +02:00
Document builtins.derivation
This commit is contained in:
parent
9c6678da0e
commit
74698d54c8
2 changed files with 39 additions and 14 deletions
|
@ -1,6 +1,31 @@
|
||||||
/* This is the implementation of the ‘derivation’ builtin function.
|
# This is the implementation of the ‘derivation’ builtin function.
|
||||||
It's actually a wrapper around the ‘derivationStrict’ primop. */
|
# It's actually a wrapper around the ‘derivationStrict’ primop.
|
||||||
|
# Note that the following comment will be shown in :doc in the repl, but not in the manual.
|
||||||
|
|
||||||
|
/**
|
||||||
|
Create a derivation.
|
||||||
|
|
||||||
|
# Inputs
|
||||||
|
|
||||||
|
The single argument is an attribute set that describes what to build and how to build it.
|
||||||
|
See https://nix.dev/manual/nix/2.23/language/derivations
|
||||||
|
|
||||||
|
# Output
|
||||||
|
|
||||||
|
The result is an attribute set that describes the derivation.
|
||||||
|
Notably it contains the outputs, which in the context of the Nix language are special strings that refer to the output paths, which may not yet exist.
|
||||||
|
The realisation of these outputs only occurs when needed; for example
|
||||||
|
|
||||||
|
* When `nix-build` or a similar command is run, it realises the outputs that were requested on its command line.
|
||||||
|
See https://nix.dev/manual/nix/2.23/command-ref/nix-build
|
||||||
|
|
||||||
|
* When `import`, `readFile`, `readDir` or some other functions are called, they have to realise the outputs they depend on.
|
||||||
|
This is referred to as "import from derivation".
|
||||||
|
See https://nix.dev/manual/nix/2.23/language/import-from-derivation
|
||||||
|
|
||||||
|
Note that `derivation` is very bare-bones, and provides almost no commands during the build.
|
||||||
|
Most likely, you'll want to use functions like `stdenv.mkDerivation` in Nixpkgs to set up a basic environment.
|
||||||
|
*/
|
||||||
drvAttrs @ { outputs ? [ "out" ], ... }:
|
drvAttrs @ { outputs ? [ "out" ], ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
|
@ -1,24 +1,24 @@
|
||||||
error:
|
error:
|
||||||
… while evaluating the attribute 'outPath'
|
… while evaluating the attribute 'outPath'
|
||||||
at <nix/derivation-internal.nix>:19:9:
|
at <nix/derivation-internal.nix>:44:9:
|
||||||
18| value = commonAttrs // {
|
43| value = commonAttrs // {
|
||||||
19| outPath = builtins.getAttr outputName strict;
|
44| outPath = builtins.getAttr outputName strict;
|
||||||
| ^
|
| ^
|
||||||
20| drvPath = strict.drvPath;
|
45| drvPath = strict.drvPath;
|
||||||
|
|
||||||
… while calling the 'getAttr' builtin
|
… while calling the 'getAttr' builtin
|
||||||
at <nix/derivation-internal.nix>:19:19:
|
at <nix/derivation-internal.nix>:44:19:
|
||||||
18| value = commonAttrs // {
|
43| value = commonAttrs // {
|
||||||
19| outPath = builtins.getAttr outputName strict;
|
44| outPath = builtins.getAttr outputName strict;
|
||||||
| ^
|
| ^
|
||||||
20| drvPath = strict.drvPath;
|
45| drvPath = strict.drvPath;
|
||||||
|
|
||||||
… while calling the 'derivationStrict' builtin
|
… while calling the 'derivationStrict' builtin
|
||||||
at <nix/derivation-internal.nix>:9:12:
|
at <nix/derivation-internal.nix>:34:12:
|
||||||
8|
|
33|
|
||||||
9| strict = derivationStrict drvAttrs;
|
34| strict = derivationStrict drvAttrs;
|
||||||
| ^
|
| ^
|
||||||
10|
|
35|
|
||||||
|
|
||||||
… while evaluating derivation '~jiggle~'
|
… while evaluating derivation '~jiggle~'
|
||||||
whose name attribute is located at /pwd/lang/eval-fail-derivation-name.nix:2:3
|
whose name attribute is located at /pwd/lang/eval-fail-derivation-name.nix:2:3
|
||||||
|
|
Loading…
Reference in a new issue