qq: refactor update script

This commit is contained in:
Sizhe Zhao
2025-06-17 18:34:09 +08:00
parent 2e92942bd1
commit 0119a82552
3 changed files with 46 additions and 33 deletions
+5 -15
View File
@@ -29,24 +29,14 @@
}:
let
sources = import ./sources.nix;
srcs = {
x86_64-linux = fetchurl {
url = sources.amd64_url;
hash = sources.amd64_hash;
};
aarch64-linux = fetchurl {
url = sources.arm64_url;
hash = sources.arm64_hash;
};
};
src =
srcs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
sources = import ./sources.nix { inherit fetchurl; };
source =
sources.${stdenv.hostPlatform.system}
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
in
stdenv.mkDerivation {
pname = "qq";
version = sources.version;
inherit src;
inherit (source) version src;
nativeBuildInputs = [
autoPatchelfHook
+15 -5
View File
@@ -1,9 +1,19 @@
# Generated by ./update.sh - do not update manually!
# Last updated: 2025-05-30
{ fetchurl }:
{
version = "3.2.17-2025.5.21";
amd64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.17_250521_amd64_01.deb";
arm64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.17_250521_arm64_01.deb";
arm64_hash = "sha256-PdZ9yHyyx55Y6J59ZsjDsXhXHyNkk1JBS9K0i0vuX/Q=";
amd64_hash = "sha256-BG6Qz+hquexSa5QCwWx6vucb4TS0dUQ6UYKB/zkkI1g=";
aarch64-linux = {
version = "3.2.17-2025.5.21";
src = fetchurl {
url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.17_250521_arm64_01.deb";
hash = "sha256-PdZ9yHyyx55Y6J59ZsjDsXhXHyNkk1JBS9K0i0vuX/Q=";
};
};
x86_64-linux = {
version = "3.2.17-2025.5.21";
src = fetchurl {
url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.17_250521_amd64_01.deb";
hash = "sha256-BG6Qz+hquexSa5QCwWx6vucb4TS0dUQ6UYKB/zkkI1g=";
};
};
}
+26 -13
View File
@@ -5,27 +5,40 @@ set -euo pipefail
cd $(readlink -e $(dirname "${BASH_SOURCE[0]}"))
payload=$(curl https://im.qq.com/rainbow/linuxQQDownload | grep -oP "var params= \K\{.*\}(?=;)")
amd64_url=$(jq -r .x64DownloadUrl.deb <<< "$payload")
arm64_url=$(jq -r .armDownloadUrl.deb <<< "$payload")
# linux
version=$(jq -r .version <<< "$payload")-$(jq -r .updateDate <<< "$payload")
linux_url=$(curl -s https://im.qq.com/linuxqq/index.shtml | grep -oP 'var rainbowConfigUrl = "\K.*(?=";)')
linux_payload=$(curl "$linux_url" | grep -oP "var params= \K\{.*\}(?=;)")
linux_version=$(jq -r .version <<< "$linux_payload")-$(jq -r .updateDate <<< "$linux_payload")
amd64_hash=$(nix-prefetch-url $amd64_url)
arm64_hash=$(nix-prefetch-url $arm64_url)
linux_aarch64_url=$(jq -r .armDownloadUrl.deb <<< "$linux_payload")
linux_x86_64_url=$(jq -r .x64DownloadUrl.deb <<< "$linux_payload")
linux_aarch64_hash=$(nix-prefetch-url $linux_aarch64_url)
linux_x86_64_hash=$(nix-prefetch-url $linux_x86_64_url)
# use friendlier hashes
amd64_hash=$(nix hash convert --to sri --hash-algo sha256 "$amd64_hash")
arm64_hash=$(nix hash convert --to sri --hash-algo sha256 "$arm64_hash")
linux_aarch64_hash=$(nix hash convert --to sri --hash-algo sha256 "$linux_aarch64_hash")
linux_x86_64_hash=$(nix hash convert --to sri --hash-algo sha256 "$linux_x86_64_hash")
cat >sources.nix <<EOF
# Generated by ./update.sh - do not update manually!
# Last updated: $(date +%F)
{ fetchurl }:
{
version = "$version";
amd64_url = "$amd64_url";
arm64_url = "$arm64_url";
arm64_hash = "$arm64_hash";
amd64_hash = "$amd64_hash";
aarch64-linux = {
version = "$linux_version";
src = fetchurl {
url = "$linux_aarch64_url";
hash = "$linux_aarch64_hash";
};
};
x86_64-linux = {
version = "$linux_version";
src = fetchurl {
url = "$linux_x86_64_url";
hash = "$linux_x86_64_hash";
};
};
}
EOF