From 7f4dd46fab3a27977c6d80c278cbd3a53c9c3980 Mon Sep 17 00:00:00 2001 From: kolaente Date: Wed, 18 Sep 2024 14:46:22 +0200 Subject: [PATCH] cypress: add support for aarch64 on darwin --- pkgs/development/web/cypress/default.nix | 33 +++++++++++++++++++----- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/pkgs/development/web/cypress/default.nix b/pkgs/development/web/cypress/default.nix index eebb68cc3fbe..856b31af1565 100644 --- a/pkgs/development/web/cypress/default.nix +++ b/pkgs/development/web/cypress/default.nix @@ -12,6 +12,7 @@ , unzip , wrapGAppsHook3 , xorg +, darwin }: let @@ -24,6 +25,10 @@ let platform = "linux-arm64"; checksum = "sha256-rB0ak6jYnJMb0aHDLAyhaGoOFK4FXDLEOeofNdW/Wk8="; }; + aarch64-darwin = { + platform = "darwin-arm64"; + checksum = "sha256-L2rhtB/DIK7Qum2YNoWVBn4mf+DA3rbcBUfZEEa/C8c="; + }; }; inherit (stdenv.hostPlatform) system; binary = availableBinaries.${system} or (throw "cypress: No binaries available for system ${system}"); @@ -35,27 +40,37 @@ in stdenv.mkDerivation rec { src = fetchzip { url = "https://cdn.cypress.io/desktop/${version}/${platform}/cypress.zip"; sha256 = checksum; + stripRoot = !stdenv.isDarwin; }; # don't remove runtime deps dontPatchELF = true; - nativeBuildInputs = [ autoPatchelfHook (wrapGAppsHook3.override { makeWrapper = makeShellWrapper; }) unzip makeShellWrapper]; + nativeBuildInputs = [ unzip makeShellWrapper ] + ++ lib.optionals stdenv.isLinux [ autoPatchelfHook (wrapGAppsHook3.override { makeWrapper = makeShellWrapper; }) ]; - buildInputs = with xorg; [ + buildInputs = lib.optionals stdenv.isLinux (with xorg; [ libXScrnSaver libXdamage libXtst libxshmfence - ] ++ [ nss gtk2 alsa-lib gtk3 mesa # for libgbm - ]; + ]) ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ + Cocoa + CoreServices + CoreMedia + CoreAudio + AudioToolbox + AVFoundation + Foundation + ApplicationServices + ]); - runtimeDependencies = [ (lib.getLib udev) ]; + runtimeDependencies = lib.optional stdenv.isLinux (lib.getLib udev); installPhase = '' runHook preInstall @@ -68,11 +83,15 @@ in stdenv.mkDerivation rec { printf '{"version":"%b"}' $version > $out/bin/resources/app/package.json # Cypress now looks for binary_state.json in bin echo '{"verified": true}' > $out/binary_state.json - ln -s $out/opt/cypress/Cypress $out/bin/cypress + ${if stdenv.isDarwin then '' + ln -s $out/opt/cypress/Cypress.app/Contents/MacOS/Cypress $out/bin/cypress + '' else '' + ln -s $out/opt/cypress/Cypress $out/bin/cypress + ''} runHook postInstall ''; - postFixup = '' + postFixup = lib.optionalString (!stdenv.isDarwin) '' # exit with 1 after 25.05 makeWrapper $out/opt/cypress/Cypress $out/bin/Cypress \ --run 'echo "Warning: Use the lowercase cypress executable instead of the capitalized one."'