27 lines
712 B
Nix
27 lines
712 B
Nix
/* This is the implementation of the 'derivation' builtin function.
|
|
It's actually a wrapper around the 'derivationStrict' primop. */
|
|
|
|
drvAttrs @ { outputs ? [ "out" ], ... }:
|
|
|
|
let
|
|
|
|
strict = derivationStrict drvAttrs;
|
|
|
|
commonAttrs = drvAttrs // (builtins.listToAttrs outputsList) //
|
|
{ all = map (x: x.value) outputsList;
|
|
inherit drvAttrs;
|
|
};
|
|
|
|
outputToAttrListElement = outputName:
|
|
{ name = outputName;
|
|
value = commonAttrs // {
|
|
outPath = builtins.getAttr outputName strict;
|
|
drvPath = strict.drvPath;
|
|
type = "derivation";
|
|
inherit outputName;
|
|
};
|
|
};
|
|
|
|
outputsList = map outputToAttrListElement outputs;
|
|
|
|
in (builtins.head outputsList).value
|