diff --git a/lib/attrsets.nix b/lib/attrsets.nix index 833fc5871486..8bb4ef972fd8 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -1901,6 +1901,35 @@ rec { */ getLib = getOutput "lib"; + /** + Get a package's `static` output. + If the output does not exist, fallback to `.lib`, then to `.out`, and then to the default. + + # Inputs + + `pkg` + + : The package whose `static` output will be retrieved. + + # Type + + ``` + getStatic :: Derivation -> Derivation + ``` + + # Examples + :::{.example} + ## `lib.attrsets.getStatic` usage example + + ```nix + "${lib.getStatic pkgs.glibc}" + => "/nix/store/00000000000000000000000000000000-glibc-2.39-52-static" + ``` + + ::: + */ + getStatic = getFirstOutput [ "static" "lib" "out" ]; + /** Get a package's `dev` output. diff --git a/lib/default.nix b/lib/default.nix index adc7caa6bb9e..ecf4fbb75339 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -87,7 +87,7 @@ let mapAttrsRecursiveCond genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs mergeAttrsList overrideExisting showAttrPath getOutput getFirstOutput - getBin getLib getDev getInclude getMan chooseDevOutputs zipWithNames zip + getBin getLib getStatic getDev getInclude getMan chooseDevOutputs zipWithNames zip recurseIntoAttrs dontRecurseIntoAttrs cartesianProduct cartesianProductOfSets mapCartesianProduct updateManyAttrsByPath listToAttrs hasAttr getAttr isAttrs intersectAttrs removeAttrs; inherit (self.lists) singleton forEach map foldr fold foldl foldl' imap0 imap1