From 9338d924dbe0c6b93daec3bf435322812fd176fe Mon Sep 17 00:00:00 2001 From: adisbladis Date: Fri, 2 May 2025 18:20:17 +0200 Subject: [PATCH] lib.meta.availableOn: Return false if pkg parameter is null To fix overriding packages that checks for platform compatibility, like pipewire. `pipewire` contains the following logic to enable support for ldac depending on library platform compatibility: ```nix ldacbtSupport = lib.meta.availableOn stdenv.hostPlatform ldacbt ``` Which is used later in the expression to create a Meson flag: ```nix (lib.mesonEnable "bluez5-codec-ldac" (bluezSupport && ldacbtSupport)) ``` This means that attempting to build `pipewire` without `ldacbt` like: ```nix pipewire.override { ldacbt = null; } ``` will fail because the the Meson flag indicates the feature should be enabled, but the library is passed to `buildInputs` as `null`. --- lib/meta.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/meta.nix b/lib/meta.nix index ee234d94489b..ad4f770806dd 100644 --- a/lib/meta.nix +++ b/lib/meta.nix @@ -289,7 +289,8 @@ rec { */ availableOn = platform: pkg: - ((!pkg ? meta.platforms) || any (platformMatch platform) pkg.meta.platforms) + pkg != null + && ((!pkg ? meta.platforms) || any (platformMatch platform) pkg.meta.platforms) && all (elem: !platformMatch platform elem) (pkg.meta.badPlatforms or [ ]); /**