From 354d262db829ecedb3fb43d1bdb454b20d9941f7 Mon Sep 17 00:00:00 2001 From: oxalica Date: Fri, 26 Feb 2021 00:21:13 +0800 Subject: lib.meta: introduce `availableOn` --- lib/meta.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'lib') 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 []); } -- cgit 1.4.1