From 61d55f4308f3ec34e6c6b602d923110951d53177 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 17 Dec 2025 07:02:15 -0500 Subject: [PATCH 1/3] electron*: meld electron-bin*.meta.platforms into .meta.platforms It should let Hydra and other infra know that this package - and its children like podman-desktop that inherit `platforms` from electron package - support darwin. Thanks to @fugidev for the original idea. --- pkgs/top-level/all-packages.nix | 63 ++++++++++++++++++++++----------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4d21561f8242..c30107afd03a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5785,27 +5785,48 @@ with pkgs; electron-chromedriver_40 ; - electron_36 = electron_36-bin; - electron_37 = - if lib.meta.availableOn stdenv.hostPlatform electron-source.electron_37 then - electron-source.electron_37 - else - electron_37-bin; - electron_38 = - if lib.meta.availableOn stdenv.hostPlatform electron-source.electron_38 then - electron-source.electron_38 - else - electron_38-bin; - electron_39 = - if lib.meta.availableOn stdenv.hostPlatform electron-source.electron_39 then - electron-source.electron_39 - else - electron_39-bin; - electron_40 = - if lib.meta.availableOn stdenv.hostPlatform electron-source.electron_40 then - electron-source.electron_40 - else - electron_40-bin; + inherit + ( + let + # On Linux, we use source electron package. On Darwin, we use binary. Hydra + # and other infra uses Linux package .meta.platforms to determine supported + # platforms. It means that Hydra won't cache podman-desktop and other + # electron-based apps on Darwin. This helper will force Linux package .meta + # to list darwin. + getElectronPkg = + { src, bin }: + (if lib.meta.availableOn stdenv.hostPlatform src then src else bin).overrideAttrs (old: { + meta = old.meta // { + platforms = lib.lists.unique (src.meta.platforms ++ bin.meta.platforms); + }; + }); + in + { + electron_36 = electron_36-bin; + electron_37 = getElectronPkg { + src = electron-source.electron_37; + bin = electron_37-bin; + }; + electron_38 = getElectronPkg { + src = electron-source.electron_38; + bin = electron_38-bin; + }; + electron_39 = getElectronPkg { + src = electron-source.electron_39; + bin = electron_39-bin; + }; + electron_40 = getElectronPkg { + src = electron-source.electron_40; + bin = electron_40-bin; + }; + } + ) + electron_36 + electron_37 + electron_38 + electron_39 + electron_40 + ; electron = electron_38; electron-bin = electron_38-bin; electron-chromedriver = electron-chromedriver_38; From 10e6cebac2d92cc7403b8650a25a50e195d48e58 Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 17 Dec 2025 07:33:59 -0500 Subject: [PATCH 2/3] joplin-desktop: rely on electron.meta.platforms to include darwin --- pkgs/by-name/jo/joplin-desktop/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/jo/joplin-desktop/package.nix b/pkgs/by-name/jo/joplin-desktop/package.nix index 33d9a9b8f3cd..db69e0a94270 100644 --- a/pkgs/by-name/jo/joplin-desktop/package.nix +++ b/pkgs/by-name/jo/joplin-desktop/package.nix @@ -248,6 +248,6 @@ stdenv.mkDerivation (finalAttrs: { maintainers = with lib.maintainers; [ fugi ]; - platforms = electron.meta.platforms ++ lib.platforms.darwin; + inherit (electron.meta) platforms; }; }) From af15cb490464c6e13da16af180a0575191e7d37e Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Wed, 17 Dec 2025 07:34:12 -0500 Subject: [PATCH 3/3] element-desktop: rely on electron.meta.platforms to include darwin --- pkgs/by-name/el/element-desktop/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/el/element-desktop/package.nix b/pkgs/by-name/el/element-desktop/package.nix index cd992a4489b1..5cd9ff13ecae 100644 --- a/pkgs/by-name/el/element-desktop/package.nix +++ b/pkgs/by-name/el/element-desktop/package.nix @@ -174,7 +174,7 @@ stdenv.mkDerivation ( changelog = "https://github.com/element-hq/element-desktop/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.agpl3Plus; teams = [ lib.teams.matrix ]; - platforms = electron.meta.platforms ++ lib.platforms.darwin; + inherit (electron.meta) platforms; mainProgram = "element-desktop"; }; }