summaryrefslogtreecommitdiff
path: root/lib/meta.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/meta.nix')
-rw-r--r--lib/meta.nix12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/meta.nix b/lib/meta.nix
index 2e83c4247ddf..bc04394dcf0b 100644
--- a/lib/meta.nix
+++ b/lib/meta.nix
@@ -87,4 +87,16 @@ rec {
then { system = elem; }
else { parsed = elem; };
in lib.matchAttrs pattern platform;
+
+ /* Check if a package is available on a given platform.
+
+ A package is available on a platform if both
+
+ 1. One of `meta.platforms` pattern matches the given platform.
+
+ 2. None of `meta.badPlatforms` pattern matches the given platform.
+ */
+ availableOn = platform: pkg:
+ lib.any (platformMatch platform) pkg.meta.platforms &&
+ lib.all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or []);
}