diff options
author | Silvan Mosberger <contact@infinisil.com> | 2021-05-08 03:54:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-08 03:54:36 +0200 |
commit | 08d94fd2b00e5d403e3a5aa80e52c0b940044ebf (patch) | |
tree | 80bd55b90c10bf2783aca010bf9de3b727e41acd /lib | |
parent | 088da8735f6620b60d724aa7db742607ea216087 (diff) | |
parent | 354d262db829ecedb3fb43d1bdb454b20d9941f7 (diff) |
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.nix | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/meta.nix b/lib/meta.nix index 2e83c4247ddfb..bc04394dcf0b5 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 []); } |