diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix index 35656cc84bf8..70ec5ecc1707 100644 --- a/pkgs/by-name/pr/protonmail-desktop/package.nix +++ b/pkgs/by-name/pr/protonmail-desktop/package.nix @@ -1,80 +1,58 @@ { + asar, lib, stdenv, fetchurl, makeWrapper, dpkg, electron, - unzip, }: - let mainProgram = "proton-mail"; - srcHashes = { - # Upstream info: It's intended to stay like this in further releases - # https://github.com/NixOS/nixpkgs/pull/326152#discussion_r1679558135 - universal-darwin = "sha256-6b+CNCvrkIA1CvSohSJZq/veZZNsA3lyhVv5SsBlJlw="; - x86_64-linux = "sha256-v8ufnQQEqTT5cr7fq8Fozje/NDlBzaCeKIzE6yU/biE="; - }; + version = "1.5.1"; in -stdenv.mkDerivation rec { +stdenv.mkDerivation { pname = "protonmail-desktop"; - # Upstream info: "v"-prefix got dropped - version = "1.0.6"; + inherit version; src = fetchurl { - url = - if stdenv.hostPlatform.isDarwin then - "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/Proton.Mail-darwin-universal-${version}.zip" - else - "https://github.com/ProtonMail/inbox-desktop/releases/download/${version}/proton-mail_${version}_amd64.deb"; - sha256 = - { - x86_64-linux = srcHashes.x86_64-linux; - x86_64-darwin = srcHashes.universal-darwin; - aarch64-darwin = srcHashes.universal-darwin; - } - .${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}"); + url = "https://proton.me/download/mail/linux/${version}/ProtonMail-desktop-beta.deb"; + sha256 = "sha256-PkxJUzSmSeIf/WjXCj5Pne5DHrXnTRib1IqHtbe3lNA="; }; - sourceRoot = lib.optionalString stdenv.hostPlatform.isDarwin "."; - dontConfigure = true; dontBuild = true; - nativeBuildInputs = - [ - makeWrapper - ] - ++ lib.optional stdenv.hostPlatform.isLinux dpkg ++ lib.optional stdenv.hostPlatform.isDarwin unzip; + nativeBuildInputs = [ + dpkg + makeWrapper + asar + ]; - installPhase = - let - darwin = '' - mkdir -p $out/{Applications,bin} - cp -r "Proton Mail.app" $out/Applications/ - makeWrapper $out/Applications/"Proton Mail.app"/Contents/MacOS/Proton\ Mail $out/bin/protonmail-desktop - ''; - linux = '' - runHook preInstall - mkdir -p $out - cp -r usr/share/ $out/ - cp -r usr/lib/proton-mail/resources/app.asar $out/share/ - ''; + # Rebuild the ASAR archive, hardcoding the resourcesPath + preInstall = '' + asar extract usr/lib/proton-mail/resources/app.asar tmp + rm usr/lib/proton-mail/resources/app.asar + substituteInPlace tmp/.webpack/main/index.js \ + --replace-fail "process.resourcesPath" "'$out/share/proton-mail'" + asar pack tmp/ usr/lib/proton-mail/resources/app.asar + rm -fr tmp + ''; - in - '' - runHook preInstall + installPhase = '' + runHook preInstall - ${if stdenv.hostPlatform.isDarwin then darwin else linux} + mkdir -p $out/share/proton-mail + cp -r usr/share/ $out/ + cp -r usr/lib/proton-mail/resources/* $out/share/proton-mail/ - runHook postInstall - ''; + runHook postInstall + ''; preFixup = lib.optionalString stdenv.hostPlatform.isLinux '' makeWrapper ${lib.getExe electron} $out/bin/${mainProgram} \ - --add-flags $out/share/app.asar \ + --add-flags $out/share/proton-mail/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 \ @@ -85,7 +63,7 @@ stdenv.mkDerivation rec { meta = { description = "Desktop application for Mail and Calendar, made with Electron"; - homepage = "https://github.com/ProtonMail/inbox-desktop"; + homepage = "https://github.com/ProtonMail/WebClients"; license = lib.licenses.gpl3Plus; maintainers = with lib.maintainers; [ rsniezek @@ -94,10 +72,9 @@ stdenv.mkDerivation rec { ]; platforms = [ "x86_64-linux" - "x86_64-darwin" - "aarch64-darwin" ]; sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + inherit mainProgram; }; } diff --git a/pkgs/by-name/pr/protonmail-desktop/update.sh b/pkgs/by-name/pr/protonmail-desktop/update.sh index 4b1a10f17738..bd197203b8bc 100755 --- a/pkgs/by-name/pr/protonmail-desktop/update.sh +++ b/pkgs/by-name/pr/protonmail-desktop/update.sh @@ -5,25 +5,7 @@ set -eu -o pipefail -latestVersion=$(curl https://api.github.com/repos/ProtonMail/inbox-desktop/releases/latest | jq -r '.tag_name') - -declare -A platforms -platforms[x86_64-linux]="amd64" -platforms[x86_64-darwin]="universal" - -for platform in "${!platforms[@]}" -do - arch=${platforms[$platform]} - os=$(echo "$platform" | cut -d "-" -f2) - - if [[ "$os" == "linux" ]]; then - downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/proton-mail_${latestVersion}_${arch}.deb" - else - downloadUrl="https://github.com/ProtonMail/inbox-desktop/releases/download/${latestVersion}/Proton.Mail-${os}-${arch}-${latestVersion}.zip" - fi - echo "$downloadUrl" - - latestSha=$(nix store prefetch-file "$downloadUrl" --json | jq -r '.hash') - - update-source-version "protonmail-desktop" "$latestVersion" "$latestSha" --system="$platform" --ignore-same-version --file=./pkgs/by-name/pr/protonmail-desktop/package.nix -done +latestVersion=$(curl https://proton.me/download/mail/linux/version.json | jq -r 'first(.Releases[])|.Version') +downloadUrl="https://proton.me/download/mail/linux/${latestVersion}/ProtonMail-desktop-beta.deb" +latestSha=$(nix store prefetch-file "$downloadUrl" --json | jq -r '.hash') +update-source-version "protonmail-desktop" "$latestVersion" "$latestSha" --ignore-same-version --file=./pkgs/by-name/pr/protonmail-desktop/package.nix