diff options
Diffstat (limited to 'pkgs/by-name/pr/protonmail-desktop')
-rw-r--r-- | pkgs/by-name/pr/protonmail-desktop/package.nix | 101 | ||||
-rwxr-xr-x | pkgs/by-name/pr/protonmail-desktop/update.sh | 29 |
2 files changed, 105 insertions, 25 deletions
diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix index b3edfaa9dc212..81866b4fd3a16 100644 --- a/pkgs/by-name/pr/protonmail-desktop/package.nix +++ b/pkgs/by-name/pr/protonmail-desktop/package.nix @@ -1,36 +1,78 @@ -{ lib -, stdenv -, fetchurl -, makeWrapper -, dpkg -, electron +{ + lib, + stdenv, + fetchurl, + makeWrapper, + dpkg, + electron, + unzip, }: let mainProgram = "proton-mail"; -in stdenv.mkDerivation rec { + 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="; + }; + +in +stdenv.mkDerivation rec { pname = "protonmail-desktop"; - version = "1.0.1"; + # Upstream info: "v"-prefix got dropped + version = "1.0.6"; src = fetchurl { - url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/proton-mail_${version}_amd64.deb"; - hash = "sha256-fNK//x3DOsynWSkG9N+nZ3wjYoC+RreaYVC6KEDXh4w="; + 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}"); }; + sourceRoot = lib.optionalString stdenv.hostPlatform.isDarwin "."; + dontConfigure = true; dontBuild = true; - nativeBuildInputs = [ dpkg makeWrapper ]; + nativeBuildInputs = + [ + makeWrapper + ] + ++ lib.optional stdenv.hostPlatform.isLinux dpkg ++ lib.optional stdenv.hostPlatform.isDarwin unzip; - installPhase = '' - runHook preInstall - mkdir -p $out - cp -r usr/share/ $out/ - cp -r usr/lib/proton-mail/resources/app.asar $out/share/ - runHook postInstall - ''; + 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/ + ''; + + in + '' + runHook preInstall - preFixup = '' + ${if stdenv.hostPlatform.isDarwin then darwin else linux} + + runHook postInstall + ''; + + preFixup = lib.optionalString stdenv.hostPlatform.isLinux '' makeWrapper ${lib.getExe electron} $out/bin/${mainProgram} \ --add-flags $out/share/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ @@ -39,14 +81,23 @@ in stdenv.mkDerivation rec { --inherit-argv0 ''; - meta = with lib; { + passthru.updateScript = ./update.sh; + + meta = { description = "Desktop application for Mail and Calendar, made with Electron"; homepage = "https://github.com/ProtonMail/inbox-desktop"; - license = licenses.gpl3Plus; - maintainers = with maintainers; [ rsniezek sebtm ]; - platforms = [ "x86_64-linux" ]; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ + rsniezek + sebtm + matteopacini + ]; + 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 new file mode 100755 index 0000000000000..4b1a10f177386 --- /dev/null +++ b/pkgs/by-name/pr/protonmail-desktop/update.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p common-updater-scripts jq + +# shellcheck disable=SC1008 + +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 |