From d7b5e1a95a54abc72005bd45ea55b774cae20d81 Mon Sep 17 00:00:00 2001 From: toonn Date: Thu, 23 Jan 2025 16:50:30 +0100 Subject: [PATCH 1/4] wire-desktop: Add versions.json to enable updateScript --- pkgs/by-name/wi/wire-desktop/package.nix | 20 ++++++++------------ pkgs/by-name/wi/wire-desktop/versions.json | 10 ++++++++++ 2 files changed, 18 insertions(+), 12 deletions(-) create mode 100644 pkgs/by-name/wi/wire-desktop/versions.json diff --git a/pkgs/by-name/wi/wire-desktop/package.nix b/pkgs/by-name/wi/wire-desktop/package.nix index 0f89a5bb4881..e3138a19d99a 100644 --- a/pkgs/by-name/wi/wire-desktop/package.nix +++ b/pkgs/by-name/wi/wire-desktop/package.nix @@ -26,25 +26,21 @@ let pname = "wire-desktop"; + versions = builtins.fromJSON (builtins.readFile ./versions.json); + version = - let - x86_64-darwin = "3.39.5211"; - in { - inherit x86_64-darwin; - aarch64-darwin = x86_64-darwin; - x86_64-linux = "3.39.3653"; + x86_64-darwin = versions.macos.version; + aarch64-darwin = versions.macos.version; + x86_64-linux = versions.linux.version; } .${system} or throwSystem; hash = - let - x86_64-darwin = "sha256-k6CIqHt67AFL70zdK0/91aQcpbb00OIggk5TF7y1IOY="; - in { - inherit x86_64-darwin; - aarch64-darwin = x86_64-darwin; - x86_64-linux = "sha256-BbY+7fGAWW5CR/z4GeoBl5aOewCRuWzQjpQX4x1rzls="; + x86_64-darwin = versions.macos.hash; + aarch64-darwin = versions.macos.hash; + x86_64-linux = versions.linux.hash; } .${system} or throwSystem; diff --git a/pkgs/by-name/wi/wire-desktop/versions.json b/pkgs/by-name/wi/wire-desktop/versions.json new file mode 100644 index 000000000000..c346a28aa85f --- /dev/null +++ b/pkgs/by-name/wi/wire-desktop/versions.json @@ -0,0 +1,10 @@ +{ + "linux": { + "version": "3.39.3653", + "hash": "sha256-BbY+7fGAWW5CR/z4GeoBl5aOewCRuWzQjpQX4x1rzls=" + }, + "macos": { + "version": "3.39.5211", + "hash": "sha256-k6CIqHt67AFL70zdK0/91aQcpbb00OIggk5TF7y1IOY=" + } +} From cf36c820c542b992f0635435b34b5ce516fd5cfa Mon Sep 17 00:00:00 2001 From: toonn Date: Tue, 31 Dec 2024 14:01:07 +0100 Subject: [PATCH 2/4] wire-desktop: Add updateScript --- pkgs/by-name/wi/wire-desktop/package.nix | 22 +++++- pkgs/by-name/wi/wire-desktop/update.sh | 86 ++++++++++++++++++++++++ 2 files changed, 106 insertions(+), 2 deletions(-) create mode 100755 pkgs/by-name/wi/wire-desktop/update.sh diff --git a/pkgs/by-name/wi/wire-desktop/package.nix b/pkgs/by-name/wi/wire-desktop/package.nix index e3138a19d99a..d7092b4afeca 100644 --- a/pkgs/by-name/wi/wire-desktop/package.nix +++ b/pkgs/by-name/wi/wire-desktop/package.nix @@ -71,8 +71,21 @@ let hydraPlatforms = [ ]; }; + passthru.updateScript = { + command = [ + ./update.sh + ./. + ]; + supportedFeatures = [ "commit" ]; + }; + linux = stdenv.mkDerivation rec { - inherit pname version meta; + inherit + pname + version + meta + passthru + ; src = fetchurl { url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb"; @@ -147,7 +160,12 @@ let }; darwin = stdenv.mkDerivation { - inherit pname version meta; + inherit + pname + version + meta + passthru + ; src = fetchurl { url = "https://github.com/wireapp/wire-desktop/releases/download/macos%2F${version}/Wire.pkg"; diff --git a/pkgs/by-name/wi/wire-desktop/update.sh b/pkgs/by-name/wi/wire-desktop/update.sh new file mode 100755 index 000000000000..baf3477b30b8 --- /dev/null +++ b/pkgs/by-name/wi/wire-desktop/update.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq + +set -e + +cd $1 + +releases=$(curl -L \ + -H "Accept: application/vnd.github+json" \ + -H "X-GitHub-Api-Version: 2022-11-28" \ + "https://api.github.com/repos/wireapp/wire-desktop/releases" \ +) + +latest=$(jq --argjson suffix '{ "linux": ".deb", "macos": ".pkg" }' \ + --slurpfile versions versions.json ' + def platform_latest(platform): + map(select(.tag_name | startswith(platform))) + | max_by(.tag_name) + | { version: .tag_name | ltrimstr(platform + "/") + , url: .assets.[] + | .browser_download_url + | select(endswith($suffix.[platform])) + }; + + . as $releases + | $versions.[] as $old + | $old + | with_entries( .key as $key + | { key: $key, value: $releases | platform_latest($key) } + | select(.value.version != $old.[$key].version) + ) +' <<< "$releases" +) + +urlHashes=$( + printf '{ ' + function entries () { + local sep='' + for url in $(jq --raw-output '.[].url' <<< "$latest"); do + printf '%s"%s": "%s"\n' "$sep" "$url" \ + "$(nix-hash --to-sri --type sha256 $(nix-prefetch-url $url))" + sep=', ' + done + } + entries + printf '}' +) + +commit=$(jq --arg versionJSON "$(printf '%s/versions.json' "$1")" \ + --slurpfile versions versions.json ' + $versions.[] as $old + | to_entries + | map("\(.key) \($old.[.key].version) -> \(.value.version)") + | join(", ") + | [ if . == "" + then empty + else { attrPath: "wire-desktop" + , oldVersion: "A" + , newVersion: "B" + , files: [ $versionJSON ] + , commitMessage: "wire-desktop: \(.)" + } + end + ] +' <<< "$latest" +) + +tempfile=$(mktemp) + +updated=$(jq --argjson hashes "$urlHashes" --slurpfile versions versions.json ' + $versions.[] as $old + | $old + map_values(with_entries(if .key == "url" + then { key: "hash" + , value: $hashes.[.value] + } + else . + end + ) + ) +' <<< "$latest" > $tempfile +) + +mv $tempfile versions.json + +printf '%s' "$commit" +exit 0 From f17eea9f30683576834589fe6bd6e396a687f90e Mon Sep 17 00:00:00 2001 From: toonn Date: Thu, 9 Jan 2025 14:57:24 +0100 Subject: [PATCH 3/4] wire-desktop: Add empty hash check --- pkgs/by-name/wi/wire-desktop/update.sh | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/wi/wire-desktop/update.sh b/pkgs/by-name/wi/wire-desktop/update.sh index baf3477b30b8..65fb554d6aab 100755 --- a/pkgs/by-name/wi/wire-desktop/update.sh +++ b/pkgs/by-name/wi/wire-desktop/update.sh @@ -37,8 +37,11 @@ urlHashes=$( function entries () { local sep='' for url in $(jq --raw-output '.[].url' <<< "$latest"); do - printf '%s"%s": "%s"\n' "$sep" "$url" \ - "$(nix-hash --to-sri --type sha256 $(nix-prefetch-url $url))" + hash=$(nix-hash --to-sri --type sha256 $(nix-prefetch-url $url)) + if [ -z "$hash" ]; then + printf 'Failed to retrieve hash for %s\n' "$url" 2>&1 + fi + printf '%s"%s": "%s"\n' "$sep" "$url" "$hash" sep=', ' done } From 5d21839349aebbbd71b611cbaa485d94284186f6 Mon Sep 17 00:00:00 2001 From: toonn Date: Tue, 15 Apr 2025 16:58:08 +0000 Subject: [PATCH 4/4] wire-desktop: linux 3.39.3653 -> 3.40.3718, macos 3.39.5211 -> 3.40.5285 --- pkgs/by-name/wi/wire-desktop/versions.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/wi/wire-desktop/versions.json b/pkgs/by-name/wi/wire-desktop/versions.json index c346a28aa85f..3ef3c71d0589 100644 --- a/pkgs/by-name/wi/wire-desktop/versions.json +++ b/pkgs/by-name/wi/wire-desktop/versions.json @@ -1,10 +1,10 @@ { "linux": { - "version": "3.39.3653", - "hash": "sha256-BbY+7fGAWW5CR/z4GeoBl5aOewCRuWzQjpQX4x1rzls=" + "version": "3.40.3718", + "hash": "sha256-1jBhF+Rnys8C3DaVbCKHDiylox2WG1qRvwnDbQrp1Mk=" }, "macos": { - "version": "3.39.5211", - "hash": "sha256-k6CIqHt67AFL70zdK0/91aQcpbb00OIggk5TF7y1IOY=" + "version": "3.40.5285", + "hash": "sha256-pcWB3irdPyDj55dWmNyc+oThVGgHtIu//EAk1k/56is=" } }