From b745525fea4d8a7bd6d1ddf00fed8be25208ad45 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmeier Date: Wed, 10 Jul 2024 19:24:07 +0200 Subject: [PATCH 1/2] protonmail-desktop: 1.0.4 -> 1.0.5 Includes refactoring for update-script --- .../by-name/pr/protonmail-desktop/package.nix | 83 +++++++++++-------- pkgs/by-name/pr/protonmail-desktop/update.sh | 30 +++++++ 2 files changed, 77 insertions(+), 36 deletions(-) create mode 100755 pkgs/by-name/pr/protonmail-desktop/update.sh diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix index 3a500fe0c769..590abd423381 100644 --- a/pkgs/by-name/pr/protonmail-desktop/package.nix +++ b/pkgs/by-name/pr/protonmail-desktop/package.nix @@ -10,27 +10,29 @@ let mainProgram = "proton-mail"; -in -stdenv.mkDerivation rec { - pname = "protonmail-desktop"; - version = "1.0.4"; + 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-JfZwHFp0aZtHcbP7tyG7uqFs2w+LWKfnfyuxxpxDJZ8="; + x86_64-linux = "sha256-En5vkTHYtwN6GMgbtyhzsPqknOPRO9KlTqZfbBFaIFQ="; + }; - src = - { - "x86_64-linux" = fetchurl { - url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/proton-mail_${version}_amd64.deb"; - hash = "sha256-KY/rjiJozOQW27FYljy5N1VKuKroJz3V485DPaH01JY="; - }; - "x86_64-darwin" = fetchurl { - url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-x64-${version}.zip"; - hash = "sha256-I5Yj1JR3DaAmC6WKI4X/d/q9rvmsck9SE3Mx3AY6yvU="; - }; - "aarch64-darwin" = fetchurl { - url = "https://github.com/ProtonMail/inbox-desktop/releases/download/v${version}/Proton.Mail-darwin-arm64-${version}.zip"; - hash = "sha256-j1F8hhLSq/C1WQXGrYnvFK8nNz4qwoA1ohNzPsS3tiY="; - }; - } - .${stdenv.hostPlatform.system}; +in stdenv.mkDerivation rec { + pname = "protonmail-desktop"; + # Upstream info: "v"-prefix got dropped + version = "1.0.5"; + + src = fetchurl { + url = if stdenv.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.isDarwin "."; @@ -39,24 +41,31 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper - ] ++ lib.optional stdenv.isLinux dpkg ++ lib.optional stdenv.isDarwin unzip; + ] + ++ lib.optional stdenv.isLinux dpkg + ++ lib.optional stdenv.isDarwin unzip; - installPhase = - lib.optionalString stdenv.isLinux '' + 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/ - runHook postInstall - '' - + lib.optionalString stdenv.isDarwin '' - runHook preInstall - 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 - runHook postInstall ''; + in '' + runHook preInstall + + ${if stdenv.isDarwin then darwin else linux} + + runHook postInstall + ''; + preFixup = lib.optionalString stdenv.isLinux '' makeWrapper ${lib.getExe electron} $out/bin/${mainProgram} \ --add-flags $out/share/app.asar \ @@ -66,17 +75,19 @@ 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; [ + license = lib.licenses.gpl3Plus; + maintainers = with lib.maintainers; [ rsniezek sebtm matteopacini ]; - platforms = [ "x86_64-linux" ] ++ platforms.darwin; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + 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 000000000000..a640b40d49e3 --- /dev/null +++ b/pkgs/by-name/pr/protonmail-desktop/update.sh @@ -0,0 +1,30 @@ +#!/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]="x64" +platforms[aarch64-darwin]="arm64" + +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 From dffdc50d992686f5cd5f43498f9cef30d8cf691f Mon Sep 17 00:00:00 2001 From: Sebastian Sellmeier Date: Tue, 23 Jul 2024 17:05:28 +0200 Subject: [PATCH 2/2] protonmail-desktop: nixfmt (rfc-style) --- .../by-name/pr/protonmail-desktop/package.nix | 72 ++++++++++--------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/pkgs/by-name/pr/protonmail-desktop/package.nix b/pkgs/by-name/pr/protonmail-desktop/package.nix index 590abd423381..815b0dc8fe8e 100644 --- a/pkgs/by-name/pr/protonmail-desktop/package.nix +++ b/pkgs/by-name/pr/protonmail-desktop/package.nix @@ -17,21 +17,25 @@ let x86_64-linux = "sha256-En5vkTHYtwN6GMgbtyhzsPqknOPRO9KlTqZfbBFaIFQ="; }; -in stdenv.mkDerivation rec { +in +stdenv.mkDerivation rec { pname = "protonmail-desktop"; # Upstream info: "v"-prefix got dropped version = "1.0.5"; src = fetchurl { - url = if stdenv.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 = + if stdenv.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.isDarwin "."; @@ -41,31 +45,31 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ makeWrapper - ] - ++ lib.optional stdenv.isLinux dpkg - ++ lib.optional stdenv.isDarwin unzip; + ] ++ lib.optional stdenv.isLinux dpkg ++ lib.optional stdenv.isDarwin unzip; - 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 = '' + 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 - mkdir -p $out - cp -r usr/share/ $out/ - cp -r usr/lib/proton-mail/resources/app.asar $out/share/ + + ${if stdenv.isDarwin then darwin else linux} + + runHook postInstall ''; - in '' - runHook preInstall - - ${if stdenv.isDarwin then darwin else linux} - - runHook postInstall - ''; - preFixup = lib.optionalString stdenv.isLinux '' makeWrapper ${lib.getExe electron} $out/bin/${mainProgram} \ --add-flags $out/share/app.asar \ @@ -86,7 +90,11 @@ in stdenv.mkDerivation rec { sebtm matteopacini ]; - platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ]; + platforms = [ + "x86_64-linux" + "x86_64-darwin" + "aarch64-darwin" + ]; sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; inherit mainProgram; };