summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorSilvan Mosberger <contact@infinisil.com>2021-05-08 03:54:36 +0200
committerGitHub <noreply@github.com>2021-05-08 03:54:36 +0200
commit08d94fd2b00e5d403e3a5aa80e52c0b940044ebf (patch)
tree80bd55b90c10bf2783aca010bf9de3b727e41acd /lib
parent088da8735f6620b60d724aa7db742607ea216087 (diff)
parent354d262db829ecedb3fb43d1bdb454b20d9941f7 (diff)
downloadnixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar.gz
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar.bz2
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar.lz
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar.xz
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.tar.zst
nixpkgs-08d94fd2b00e5d403e3a5aa80e52c0b940044ebf.zip
Merge pull request #114374 from oxalica/lib/platform-support-check
lib.meta: introduce `availableOn` to check package availability on given platform
Diffstat (limited to 'lib')
-rw-r--r--lib/meta.nix12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/meta.nix b/lib/meta.nix
index 2e83c4247dd..bc04394dcf0 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 []);
 }