diff options
author | Silvan Mosberger | 2024-06-26 21:59:34 +0200 |
---|---|---|
committer | GitHub | 2024-06-26 21:59:34 +0200 |
commit | 298465b71cd606efb59d6550d040223ef5bbac50 (patch) | |
tree | 7ace582580dc9a4fe78e7f109f48191776357744 /lib | |
parent | 4584edc9ac66d9cb77fa5e5a0b0c1fa2327aef7b (diff) | |
parent | 7f38a9ce115a87e42ac7f8afc3bd857801e26139 (diff) |
Merge pull request #312217 from hsjobeki/doc/lib-derivations
doc: migrate lib.derivations to doc-comment format
Diffstat (limited to 'lib')
-rw-r--r-- | lib/derivations.nix | 108 |
1 files changed, 70 insertions, 38 deletions
diff --git a/lib/derivations.nix b/lib/derivations.nix index 6867458f9e87..9c3c4639a268 100644 --- a/lib/derivations.nix +++ b/lib/derivations.nix @@ -17,7 +17,7 @@ let else ""; in { - /* + /** Restrict a derivation to a predictable set of attribute names, so that the returned attrset is not strict in the actual derivation, saving a lot of computation when the derivation is non-trivial. @@ -62,25 +62,36 @@ in (lazyDerivation { inherit derivation }).pythonPath + # Inputs + + Takes an attribute set with the following attributes + + `derivation` + : The derivation to be wrapped. + + `meta` + : Optional meta attribute. + + While this function is primarily about derivations, it can improve + the `meta` package attribute, which is usually specified through + `mkDerivation`. + + `passthru` + : Optional extra values to add to the returned attrset. + + This can be used for adding package attributes, such as `tests`. + + `outputs` + : Optional list of assumed outputs. Default: ["out"] + + This must match the set of outputs that the returned derivation has. + You must use this when the derivation has multiple outputs. */ lazyDerivation = args@{ - # The derivation to be wrapped. - derivation - , # Optional meta attribute. - # - # While this function is primarily about derivations, it can improve - # the `meta` package attribute, which is usually specified through - # `mkDerivation`. - meta ? null - , # Optional extra values to add to the returned attrset. - # - # This can be used for adding package attributes, such as `tests`. - passthru ? { } - , # Optional list of assumed outputs. Default: ["out"] - # - # This must match the set of outputs that the returned derivation has. - # You must use this when the derivation has multiple outputs. + derivation, + meta ? null, + passthru ? { }, outputs ? [ "out" ] }: let @@ -149,29 +160,50 @@ in // genAttrs outputs (outputName: checked.${outputName}) // passthru; - /* Conditionally set a derivation attribute. - - Because `mkDerivation` sets `__ignoreNulls = true`, a derivation - attribute set to `null` will not impact the derivation output hash. - Thus, this function passes through its `value` argument if the `cond` - is `true`, but returns `null` if not. - - Type: optionalDrvAttr :: Bool -> a -> a | Null - - Example: - (stdenv.mkDerivation { - name = "foo"; - x = optionalDrvAttr true 1; - y = optionalDrvAttr false 1; - }).drvPath == (stdenv.mkDerivation { - name = "foo"; - x = 1; - }).drvPath - => true + /** + Conditionally set a derivation attribute. + + Because `mkDerivation` sets `__ignoreNulls = true`, a derivation + attribute set to `null` will not impact the derivation output hash. + Thus, this function passes through its `value` argument if the `cond` + is `true`, but returns `null` if not. + + + # Inputs + + `cond` + + : Condition + + `value` + + : Attribute value + + # Type + + ``` + optionalDrvAttr :: Bool -> a -> a | Null + ``` + + # Examples + :::{.example} + ## `lib.derivations.optionalDrvAttr` usage example + + ```nix + (stdenv.mkDerivation { + name = "foo"; + x = optionalDrvAttr true 1; + y = optionalDrvAttr false 1; + }).drvPath == (stdenv.mkDerivation { + name = "foo"; + x = 1; + }).drvPath + => true + ``` + + ::: */ optionalDrvAttr = - # Condition cond: - # Attribute value value: if cond then value else null; } |