From 4d59f6ae53568b60406cdc6018e7c5de0d654208 Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Tue, 21 May 2024 23:20:37 +0200 Subject: [PATCH] jitsi-meet-electron: fix darwin build --- .../jitsi-meet-electron/default.nix | 57 +++++++++++++++---- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix b/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix index a0968f83ddee..78c6912b12ba 100644 --- a/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix +++ b/pkgs/applications/networking/instant-messengers/jitsi-meet-electron/default.nix @@ -1,4 +1,5 @@ { lib +, stdenv , buildNpmPackage , fetchFromGitHub , copyDesktopItems @@ -9,9 +10,15 @@ , libXi , libXtst , zlib +, darwin , electron }: +let + inherit (darwin.apple_sdk.frameworks) Carbon CoreFoundation ApplicationServices OpenGL; + + electronDist = electron + (if stdenv.isDarwin then "/Applications" else "/libexec/electron"); +in buildNpmPackage rec { pname = "jitsi-meet-electron"; version = "2024.3.0"; @@ -24,17 +31,23 @@ buildNpmPackage rec { }; nativeBuildInputs = [ - copyDesktopItems makeWrapper + ] ++ lib.optionals stdenv.isLinux [ + copyDesktopItems ]; # robotjs node-gyp dependencies - buildInputs = [ + buildInputs = lib.optionals stdenv.isLinux [ libpng libX11 libXi libXtst zlib + ] ++ lib.optionals stdenv.isDarwin [ + Carbon + CoreFoundation + ApplicationServices + OpenGL ]; npmDepsHash = "sha256-KanG8y+tYzswCCXjSkOlk+p9XKaouP2Z7IhsD5bDtRk="; @@ -43,34 +56,54 @@ buildNpmPackage rec { env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1; + # disable code signing on Darwin + env.CSC_IDENTITY_AUTO_DISCOVERY = "false"; + preBuild = '' # remove some prebuilt binaries find node_modules -type d -name prebuilds -exec rm -r {} + + + # don't force both darwin architectures together + substituteInPlace node_modules/@jitsi/robotjs/binding.gyp \ + --replace-fail "-arch x86_64" "" \ + --replace-fail "-arch arm64" "" ''; postBuild = '' - # generate .asar file + cp -r ${electronDist} electron-dist + chmod -R u+w electron-dist + + # npmRebuild is needed because robotjs won't be built on darwin otherwise # asarUnpack makes sure to unwrap binaries so that nix can see the RPATH npm exec electron-builder -- \ --dir \ + -c.npmRebuild=true \ -c.asarUnpack="**/*.node" \ - -c.electronDist=${electron}/libexec/electron \ + -c.electronDist=electron-dist \ -c.electronVersion=${electron.version} ''; installPhase = '' runHook preInstall - mkdir -p $out/share/jitsi-meet-electron - cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/jitsi-meet-electron + ${lib.optionalString stdenv.isLinux '' + mkdir -p $out/share/jitsi-meet-electron + cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/jitsi-meet-electron - makeWrapper ${lib.getExe electron} $out/bin/jitsi-meet-electron \ - --add-flags $out/share/jitsi-meet-electron/resources/app.asar \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ - --set-default ELECTRON_IS_DEV 0 \ - --inherit-argv0 + makeWrapper ${lib.getExe electron} $out/bin/jitsi-meet-electron \ + --add-flags $out/share/jitsi-meet-electron/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ + --set-default ELECTRON_IS_DEV 0 \ + --inherit-argv0 - install -Dm644 resources/icons/512x512.png $out/share/icons/hicolor/512x512/apps/jitsi-meet-electron.png + install -Dm644 resources/icons/512x512.png $out/share/icons/hicolor/512x512/apps/jitsi-meet-electron.png + ''} + + ${lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + cp -r dist/mac*/"Jitsi Meet.app" $out/Applications + makeWrapper "$out/Applications/Jitsi Meet.app/Contents/MacOS/Jitsi Meet" $out/bin/jitsi-meet-electron + ''} runHook postInstall '';