From fb14e20249fd58facfc4819fa9fac4d75db1893f Mon Sep 17 00:00:00 2001 From: Pacman99 Date: Fri, 26 Mar 2021 14:41:10 -0700 Subject: [PATCH] lib/filterPackages: filter by flake requirements returns only non-broken derivations that support the system. --- lib/attrs.nix | 9 +++++++++ lib/default.nix | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/attrs.nix b/lib/attrs.nix index 534a9918..dbc44b5f 100644 --- a/lib/attrs.nix +++ b/lib/attrs.nix @@ -26,4 +26,13 @@ rec { }); concatAttrs = lib.fold (attr: sum: lib.recursiveUpdate sum attr) { }; + + # Filter out packages that support given system and follow flake check requirements + filterPackages = system: packages: + let + # Everything that nix flake check requires for the packages output + filter = (n: v: with v; let platforms = meta.hydraPlatforms or meta.platforms or [ ]; in + lib.isDerivation v && !meta.broken && builtins.elem system platforms); + in + lib.filterAttrs filter packages; } diff --git a/lib/default.nix b/lib/default.nix index 7fceb3ce..2ff31023 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -17,7 +17,8 @@ lib.makeExtensible (final: lists = callLibs ./lists.nix; strings = callLibs ./strings.nix; - inherit (attrs) mapFilterAttrs genAttrs' pathsToImportedAttrs concatAttrs; + inherit (attrs) mapFilterAttrs genAttrs' + pathsToImportedAttrs concatAttrs filterPackages; inherit (lists) pathsIn; inherit (strings) rgxToString; })