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; })