From ca5cc8379ccfe0a90db93f9bdcb0ad6cb119db8a Mon Sep 17 00:00:00 2001 From: Shun Ueda Date: Wed, 17 Dec 2025 23:49:48 -0500 Subject: [PATCH] proton-pass: support darwin --- pkgs/by-name/pr/proton-pass/darwin.nix | 30 +++++++++++++ pkgs/by-name/pr/proton-pass/linux.nix | 57 ++++++++++++++++++++++++ pkgs/by-name/pr/proton-pass/package.nix | 58 ++++--------------------- 3 files changed, 95 insertions(+), 50 deletions(-) create mode 100644 pkgs/by-name/pr/proton-pass/darwin.nix create mode 100644 pkgs/by-name/pr/proton-pass/linux.nix diff --git a/pkgs/by-name/pr/proton-pass/darwin.nix b/pkgs/by-name/pr/proton-pass/darwin.nix new file mode 100644 index 000000000000..78a06f105c1f --- /dev/null +++ b/pkgs/by-name/pr/proton-pass/darwin.nix @@ -0,0 +1,30 @@ +{ + stdenv, + pname, + version, + meta, + undmg, + fetchurl, +}: + +stdenv.mkDerivation (finalAttrs: { + inherit pname version meta; + + src = fetchurl { + url = "https://proton.me/download/PassDesktop/darwin/universal/ProtonPass_${version}.dmg"; + hash = "sha256-oo02IYOKZEsr0+4zimSFkutTGuS63ZvMZTeUTapZrVw="; + }; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "."; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + cp -r *.app $out/Applications + + runHook postInstall + ''; +}) diff --git a/pkgs/by-name/pr/proton-pass/linux.nix b/pkgs/by-name/pr/proton-pass/linux.nix new file mode 100644 index 000000000000..2c0f3d270e82 --- /dev/null +++ b/pkgs/by-name/pr/proton-pass/linux.nix @@ -0,0 +1,57 @@ +{ + stdenvNoCC, + dpkg, + makeWrapper, + electron, + asar, + lib, + version, + fetchurl, + pname, + meta, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + inherit pname version meta; + + nativeBuildInputs = [ + dpkg + makeWrapper + asar + ]; + + src = fetchurl { + url = "https://proton.me/download/pass/linux/x64/proton-pass_${version}_amd64.deb"; + hash = "sha256-i5QQ1uzQ2tSDX4I/APL60QcHh9Ovc7ciueRnz7cZUuE="; + }; + + dontConfigure = true; + dontBuild = true; + + # Rebuild the ASAR archive, hardcoding the resourcesPath + preInstall = '' + asar extract usr/lib/proton-pass/resources/app.asar tmp + rm usr/lib/proton-pass/resources/app.asar + substituteInPlace tmp/.webpack/main/index.js \ + --replace-fail "process.resourcesPath" "'$out/share/proton-pass'" + asar pack tmp/ usr/lib/proton-pass/resources/app.asar + rm -fr tmp + ''; + + installPhase = '' + runHook preInstall + mkdir -p $out/share/proton-pass + cp -r usr/share/ $out/ + cp -r usr/lib/proton-pass/resources/{app.asar,assets} $out/share/proton-pass/ + runHook postInstall + ''; + + preFixup = '' + makeWrapper ${lib.getExe electron} $out/bin/proton-pass \ + --add-flags $out/share/proton-pass/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ + --set-default ELECTRON_FORCE_IS_PACKAGED 1 \ + --set-default ELECTRON_IS_DEV 0 \ + --inherit-argv0 + ''; +}) diff --git a/pkgs/by-name/pr/proton-pass/package.nix b/pkgs/by-name/pr/proton-pass/package.nix index 7975883e099e..cff9973779d4 100644 --- a/pkgs/by-name/pr/proton-pass/package.nix +++ b/pkgs/by-name/pr/proton-pass/package.nix @@ -1,57 +1,12 @@ { lib, - stdenvNoCC, - fetchurl, - dpkg, - makeWrapper, - electron, - asar, + stdenv, + callPackage, }: -stdenvNoCC.mkDerivation (finalAttrs: { +let pname = "proton-pass"; version = "1.34.2"; - src = fetchurl { - url = "https://proton.me/download/pass/linux/x64/proton-pass_${finalAttrs.version}_amd64.deb"; - hash = "sha256-i5QQ1uzQ2tSDX4I/APL60QcHh9Ovc7ciueRnz7cZUuE="; - }; - - dontConfigure = true; - dontBuild = true; - - nativeBuildInputs = [ - dpkg - makeWrapper - asar - ]; - - # Rebuild the ASAR archive, hardcoding the resourcesPath - preInstall = '' - asar extract usr/lib/proton-pass/resources/app.asar tmp - rm usr/lib/proton-pass/resources/app.asar - substituteInPlace tmp/.webpack/main/index.js \ - --replace-fail "process.resourcesPath" "'$out/share/proton-pass'" - asar pack tmp/ usr/lib/proton-pass/resources/app.asar - rm -fr tmp - ''; - - installPhase = '' - runHook preInstall - mkdir -p $out/share/proton-pass - cp -r usr/share/ $out/ - cp -r usr/lib/proton-pass/resources/{app.asar,assets} $out/share/proton-pass/ - runHook postInstall - ''; - - preFixup = '' - makeWrapper ${lib.getExe electron} $out/bin/proton-pass \ - --add-flags $out/share/proton-pass/app.asar \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ - --set-default ELECTRON_FORCE_IS_PACKAGED 1 \ - --set-default ELECTRON_IS_DEV 0 \ - --inherit-argv0 - ''; - meta = { description = "Desktop application for Proton Pass"; homepage = "https://proton.me/pass"; @@ -62,8 +17,11 @@ stdenvNoCC.mkDerivation (finalAttrs: { sebtm shunueda ]; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" ] ++ lib.platforms.darwin; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; mainProgram = "proton-pass"; }; -}) +in +callPackage (if stdenv.hostPlatform.isDarwin then ./darwin.nix else ./linux.nix) { + inherit pname version meta; +}