From ecdcdeb29df5f2744ebcb7cfdc3078790dc312a8 Mon Sep 17 00:00:00 2001
From: dr56ekgbb <dr56ekgbb@mozmail.com>
Date: Thu, 10 Oct 2024 02:47:10 +0800
Subject: [PATCH 1/3] waveterm: add update script

---
 pkgs/by-name/wa/waveterm/package.nix | 42 +++++++++++++++-------------
 pkgs/by-name/wa/waveterm/update.sh   | 25 +++++++++++++++++
 2 files changed, 48 insertions(+), 19 deletions(-)
 create mode 100755 pkgs/by-name/wa/waveterm/update.sh

diff --git a/pkgs/by-name/wa/waveterm/package.nix b/pkgs/by-name/wa/waveterm/package.nix
index cc1053d58fe2..03b8fd2c0732 100644
--- a/pkgs/by-name/wa/waveterm/package.nix
+++ b/pkgs/by-name/wa/waveterm/package.nix
@@ -29,35 +29,36 @@
   wrapGAppsHook3,
   udev,
   libGL,
+  gitUpdater,
 }:
 
 let
-  inherit (stdenv.hostPlatform) system;
-  throwSystem = throw "Unsupported system: ${system}";
-
   pname = "waveterm";
   version = "0.8.8";
 
-  suffix =
-    {
-      x86_64-linux = "waveterm-linux-x64-${version}.zip";
-      aarch64-linux = "waveterm-linux-arm64-${version}.zip";
-      x86_64-darwin = "Wave-darwin-universal-${version}.zip ";
-      aarch64-darwin = "Wave-darwin-arm64-${version}.zip";
-    }
-    .${system} or throwSystem;
-
-  src = fetchurl {
-    url = "https://github.com/wavetermdev/waveterm/releases/download/v${version}/${suffix}";
-    hash =
-      {
+  src =
+    let
+      inherit (stdenv.hostPlatform) system;
+      selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}");
+      suffix = selectSystem {
+        x86_64-linux = "waveterm-linux-x64-${version}.zip";
+        aarch64-linux = "waveterm-linux-arm64-${version}.zip";
+        x86_64-darwin = "Wave-darwin-universal-${version}.zip ";
+        aarch64-darwin = "Wave-darwin-arm64-${version}.zip";
+      };
+      hash = selectSystem {
         x86_64-linux = "sha256-hRpJTFVoBQZyJD06FTRbBPj/1DlYlDWPRjJ1IKeK7Cs=";
         aarch64-linux = "sha256-T3VqsoHhPYYrAe/dEd0SUH+G4jpHjKpJTrFy8/AgoKI=";
         x86_64-darwin = "sha256-UlyNl2Qu59L4hnK8rTeUV30YVD45L7ub5SP8f97aJrw=";
         aarch64-darwin = "sha256-cP+z8DQsNBJc3p57xQdGqqq7jvYcRQRIa+P+6kD3eCc=";
-      }
-      .${system} or throwSystem;
-  };
+      };
+    in
+    fetchurl {
+      url = "https://github.com/wavetermdev/waveterm/releases/download/v${version}/${suffix}";
+      inherit hash;
+    };
+
+  passthru.updateScript = ./update.sh;
 
   desktopItems = [
     (makeDesktopItem {
@@ -112,6 +113,8 @@ let
       src
       desktopItems
       unpackPhase
+      meta
+      passthru
       ;
 
     nativeBuildInputs = [
@@ -172,6 +175,7 @@ let
       src
       unpackPhase
       meta
+      passthru
       ;
 
     nativeBuildInputs = [
diff --git a/pkgs/by-name/wa/waveterm/update.sh b/pkgs/by-name/wa/waveterm/update.sh
new file mode 100755
index 000000000000..7950a65e8dfa
--- /dev/null
+++ b/pkgs/by-name/wa/waveterm/update.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p bash curl coreutils jq common-updater-scripts
+
+latestTag=$(curl https://api.github.com/repos/wavetermdev/waveterm/releases/latest | jq -r ".tag_name")
+latestVersion="$(expr "$latestTag" : 'v\(.*\)')"
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; waveterm.version" | tr -d '"')
+
+echo "latest  version: $latestVersion"
+echo "current version: $currentVersion"
+
+if [[ "$latestVersion" == "$currentVersion" ]]; then
+    echo "package is up-to-date"
+    exit 0
+fi
+for i in \
+    "x86_64-linux waveterm-linux-x64" \
+    "aarch64-linux waveterm-linux-arm64" \
+    "x86_64-darwin Wave-darwin-universal" \
+    "aarch64-darwin Wave-darwin-arm64"; do
+    set -- $i
+    prefetch=$(nix-prefetch-url "https://github.com/wavetermdev/waveterm/releases/download/v$latestVersion/$2-$latestVersion.zip")
+    hash=$(nix-hash --type sha256 --to-sri $prefetch)
+
+    update-source-version waveterm $latestVersion $hash --system=$1 --ignore-same-version
+done

From 0e9589b19ec3854978a14b603ce629b5ecf1b193 Mon Sep 17 00:00:00 2001
From: dr56ekgbb <dr56ekgbb@mozmail.com>
Date: Thu, 10 Oct 2024 05:50:55 +0800
Subject: [PATCH 2/3] waveterm: 0.8.8 -> 0.8.9

---
 pkgs/by-name/wa/waveterm/package.nix | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/pkgs/by-name/wa/waveterm/package.nix b/pkgs/by-name/wa/waveterm/package.nix
index 03b8fd2c0732..af588aa2b97f 100644
--- a/pkgs/by-name/wa/waveterm/package.nix
+++ b/pkgs/by-name/wa/waveterm/package.nix
@@ -29,12 +29,11 @@
   wrapGAppsHook3,
   udev,
   libGL,
-  gitUpdater,
 }:
 
 let
   pname = "waveterm";
-  version = "0.8.8";
+  version = "0.8.9";
 
   src =
     let
@@ -47,10 +46,10 @@ let
         aarch64-darwin = "Wave-darwin-arm64-${version}.zip";
       };
       hash = selectSystem {
-        x86_64-linux = "sha256-hRpJTFVoBQZyJD06FTRbBPj/1DlYlDWPRjJ1IKeK7Cs=";
-        aarch64-linux = "sha256-T3VqsoHhPYYrAe/dEd0SUH+G4jpHjKpJTrFy8/AgoKI=";
-        x86_64-darwin = "sha256-UlyNl2Qu59L4hnK8rTeUV30YVD45L7ub5SP8f97aJrw=";
-        aarch64-darwin = "sha256-cP+z8DQsNBJc3p57xQdGqqq7jvYcRQRIa+P+6kD3eCc=";
+        x86_64-linux = "sha256-C3i/NGMctc8DwR7b7ec4gq9VClvehQ0wuovH++EPPqE=";
+        aarch64-linux = "sha256-iNCvDGLa5pe19d1GWZ2SZ29DZ1h7T80OK7zAs9hHhAQ=";
+        x86_64-darwin = "sha256-SaUoW4pnSFJsUioNfXukZGc5j0+2yyZrydNOO6oqKyo=";
+        aarch64-darwin = "sha256-wNiLtriTL5Ohcma8Sop3stsqKLJyUpHihoMlylGxTRI=";
       };
     in
     fetchurl {

From e5c73a5dbd60e6e17d8dbecd235a75cc564d3d8f Mon Sep 17 00:00:00 2001
From: aucub <78630225+aucub@users.noreply.github.com>
Date: Thu, 10 Oct 2024 19:36:08 +0000
Subject: [PATCH 3/3] waveterm: 0.8.9 -> 0.8.10

---
 pkgs/by-name/wa/waveterm/package.nix | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/pkgs/by-name/wa/waveterm/package.nix b/pkgs/by-name/wa/waveterm/package.nix
index af588aa2b97f..9d13d24abdc8 100644
--- a/pkgs/by-name/wa/waveterm/package.nix
+++ b/pkgs/by-name/wa/waveterm/package.nix
@@ -33,7 +33,7 @@
 
 let
   pname = "waveterm";
-  version = "0.8.9";
+  version = "0.8.10";
 
   src =
     let
@@ -46,10 +46,10 @@ let
         aarch64-darwin = "Wave-darwin-arm64-${version}.zip";
       };
       hash = selectSystem {
-        x86_64-linux = "sha256-C3i/NGMctc8DwR7b7ec4gq9VClvehQ0wuovH++EPPqE=";
-        aarch64-linux = "sha256-iNCvDGLa5pe19d1GWZ2SZ29DZ1h7T80OK7zAs9hHhAQ=";
-        x86_64-darwin = "sha256-SaUoW4pnSFJsUioNfXukZGc5j0+2yyZrydNOO6oqKyo=";
-        aarch64-darwin = "sha256-wNiLtriTL5Ohcma8Sop3stsqKLJyUpHihoMlylGxTRI=";
+        x86_64-linux = "sha256-jhXHuzHMwo9U5B+FA2xAreOYRVroMCXqDo+9pjAyh0Q=";
+        aarch64-linux = "sha256-JnKkjG67uvYNod+uosJ+svTAm9bulJzTpza3jQie1yQ=";
+        x86_64-darwin = "sha256-Dk/pKZrqkjKc7WEGkrLdZdgUEaz8ndXjZuINyVNxEa8=";
+        aarch64-darwin = "sha256-FgBbUrp+Z9K4gmM4mew0NQ2yIjuC+cgYrrYkjv0Ohhg=";
       };
     in
     fetchurl {