From 8935bfb4ac3680e38a8811c12282e2026f7e82ae Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 11 Sep 2019 12:57:38 +0200 Subject: [PATCH] lib: Add recurseIntoAttrs This makes the function available without having to evaluate the Nixpkgs fix-point, making it available in a more natural way for code that deals with multiple Nixpkgs invocations. Its definition is coupled to Nix rather than Nixpkgs, so it will feel right at home in lib. --- lib/attrsets.nix | 6 ++++++ lib/default.nix | 3 ++- pkgs/top-level/all-packages.nix | 6 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/attrsets.nix b/lib/attrsets.nix index d374d229f597..4b73735fd850 100644 --- a/lib/attrsets.nix +++ b/lib/attrsets.nix @@ -473,6 +473,12 @@ rec { /* Pick the outputs of packages to place in buildInputs */ chooseDevOutputs = drvs: builtins.map getDev drvs; + /* Make various Nix tools consider the contents of the resulting + attribute set when looking for what to build, find, etc. + */ + recurseIntoAttrs = + attrs: attrs // { recurseForDerivations = true; }; + /*** deprecated stuff ***/ zipWithNames = zipAttrsWithNames; diff --git a/lib/default.nix b/lib/default.nix index 18d2dfae1e18..34c72a3512ee 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -70,7 +70,8 @@ let genAttrs isDerivation toDerivation optionalAttrs zipAttrsWithNames zipAttrsWith zipAttrs recursiveUpdateUntil recursiveUpdate matchAttrs overrideExisting getOutput getBin - getLib getDev chooseDevOutputs zipWithNames zip; + getLib getDev chooseDevOutputs zipWithNames zip + recurseIntoAttrs; inherit (lists) singleton forEach foldr fold foldl foldl' imap0 imap1 concatMap flatten remove findSingle findFirst any all count optional optionals toList range partition zipListsWith zipLists diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cd36574e1240..c50e8eaca23b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -62,9 +62,9 @@ in inherit (lib) lowPrio hiPrio appendToName makeOverridable; - # Applying this to an attribute set will cause nix-env to look - # inside the set for derivations. - recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; }; + # Make various Nix tools consider the contents of the resulting + # attribute set when looking for what to build, find, etc. + inherit (lib) recurseIntoAttrs; # This is intended to be the reverse of recurseIntoAttrs, as it is # defined now it exists mainly for documentation purposes, but you