diff --git a/pkgs/by-name/sl/slack/package.nix b/pkgs/by-name/sl/slack/package.nix index ce2ec83cf9db..1ccc339a2409 100644 --- a/pkgs/by-name/sl/slack/package.nix +++ b/pkgs/by-name/sl/slack/package.nix @@ -7,46 +7,10 @@ let inherit (stdenvNoCC.hostPlatform) system; + sources = import ./sources.nix { inherit fetchurl; }; pname = "slack"; - x86_64-darwin-version = "4.45.64"; - x86_64-darwin-sha256 = "0skhh16lc0czxd5ifkqy39hibk4ydlfhn41zdif3hl0sd4vcqbvb"; - - x86_64-linux-version = "4.45.64"; - x86_64-linux-sha256 = "7c6af86ab1d5778aec930d4e7d77b9f9948a83a87e8458e821d6f9e8dfed180f"; - - aarch64-darwin-version = "4.45.64"; - aarch64-darwin-sha256 = "136crd17ybaznp680qb2rl0c8cllkkv21ymf3dck2jhkqbp7v2kj"; - - sources = - let - base = "https://downloads.slack-edge.com"; - in - { - x86_64-darwin = rec { - version = x86_64-darwin-version; - src = fetchurl { - url = "${base}/desktop-releases/mac/universal/${version}/Slack-${version}-macOS.dmg"; - sha256 = x86_64-darwin-sha256; - }; - }; - x86_64-linux = rec { - version = x86_64-linux-version; - src = fetchurl { - url = "${base}/desktop-releases/linux/x64/${version}/slack-desktop-${version}-amd64.deb"; - sha256 = x86_64-linux-sha256; - }; - }; - aarch64-darwin = rec { - version = aarch64-darwin-version; - src = fetchurl { - url = "${base}/desktop-releases/mac/arm64/${version}/Slack-${version}-macOS.dmg"; - sha256 = aarch64-darwin-sha256; - }; - }; - }; - passthru = { updateScript = ./update.sh; }; diff --git a/pkgs/by-name/sl/slack/sources.nix b/pkgs/by-name/sl/slack/sources.nix new file mode 100644 index 000000000000..1042fd7b69c6 --- /dev/null +++ b/pkgs/by-name/sl/slack/sources.nix @@ -0,0 +1,26 @@ +# Generated by ./update.sh - do not update manually! +# Last updated: 2025-08-29 +{ fetchurl }: +{ + aarch64-darwin = { + version = "4.45.64"; + src = fetchurl { + url = "https://downloads.slack-edge.com/desktop-releases/mac/arm64/4.45.64/Slack-4.45.64-macOS.dmg"; + hash = "sha256-cop97sITSjFZG676IPaclDLEAM1iYYDMtV8tf0LLzIw="; + }; + }; + x86_64-darwin = { + version = "4.45.64"; + src = fetchurl { + url = "https://downloads.slack-edge.com/desktop-releases/mac/x64/4.45.64/Slack-4.45.64-macOS.dmg"; + hash = "sha256-7SzSVM+2gtmsVwmoZUl3WQcI9si46nstbGUGXl+Yys8="; + }; + }; + x86_64-linux = { + version = "4.45.64"; + src = fetchurl { + url = "https://downloads.slack-edge.com/desktop-releases/linux/x64/4.45.64/slack-desktop-4.45.64-amd64.deb"; + hash = "sha256-fGr4arHVd4rskw1OfXe5+ZSKg6h+hFjoIdb56N/tGA8="; + }; + }; +} diff --git a/pkgs/by-name/sl/slack/update.sh b/pkgs/by-name/sl/slack/update.sh index 9a47575b1e7a..c54a9a5e7c29 100755 --- a/pkgs/by-name/sl/slack/update.sh +++ b/pkgs/by-name/sl/slack/update.sh @@ -1,47 +1,57 @@ #!/usr/bin/env nix-shell -#! nix-shell -i bash -p curl gnused +#! nix-shell -i bash --pure -p cacert curl jq nix -set -eou pipefail +set -euo pipefail -latest_linux_data="$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=x64&variant=deb')" -latest_mac_data="$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=universal&variant=dmg')" -latest_mac_arm_data="$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=arm64&variant=dmg')" +cd $(readlink -e $(dirname "${BASH_SOURCE[0]}")) -latest_linux_version="$(echo ${latest_linux_data} | jq -rc '.version')" -latest_mac_version="$(echo ${latest_mac_data} | jq -rc '.version')" -latest_mac_arm_version="$(echo ${latest_mac_arm_data} | jq -rc '.version')" +aarch64_darwin_data=$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=arm64&variant=dmg') +x86_64_darwin_data=$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=x64&variant=dmg') +x86_64_linux_data=$(curl -s 'https://slack.com/api/desktop.latestRelease?arch=x64&variant=deb') -nixpkgs="$(git rev-parse --show-toplevel)" -slack_nix="$nixpkgs/pkgs/by-name/sl/slack/package.nix" -nixpkgs_linux_version=$(cat "$slack_nix" | sed -n 's/.*x86_64-linux-version = \"\([0-9\.]\+\)\";.*/\1/p') -nixpkgs_mac_version=$(cat "$slack_nix" | sed -n 's/.*x86_64-darwin-version = \"\([0-9\.]\+\)\";.*/\1/p') -nixpkgs_mac_arm_version=$(cat "$slack_nix" | sed -n 's/.*aarch64-darwin-version = \"\([0-9\.]\+\)\";.*/\1/p') +aarch64_darwin_version=$(jq -r .version <<< "$aarch64_darwin_data") +x86_64_darwin_version=$(jq -r .version <<< "$x86_64_darwin_data") +x86_64_linux_version=$(jq -r .version <<< "$x86_64_linux_data") -if [[ "$nixpkgs_linux_version" == "$latest_linux_version" && \ - "$nixpkgs_mac_version" == "$latest_mac_version" && \ - "$nixpkgs_mac_arm_version" == "$latest_mac_version" ]]; then - echo "nixpkgs versions are all up to date!" - exit 0 -fi +aarch64_darwin_url=$(jq -r .download_url <<< "$aarch64_darwin_data") +x86_64_darwin_url=$(jq -r .download_url <<< "$x86_64_darwin_data") +x86_64_linux_url=$(jq -r .download_url <<< "$x86_64_linux_data") -linux_url="$(echo ${latest_linux_data} | jq -rc '.download_url')" -mac_url="$(echo ${latest_mac_data} | jq -rc '.download_url')" -mac_arm_url="$(echo ${latest_mac_arm_data} | jq -rc '.download_url')" -linux_sha256=$(nix-prefetch-url ${linux_url}) -mac_sha256=$(nix-prefetch-url ${mac_url}) -mac_arm_sha256=$(nix-prefetch-url ${mac_arm_url}) +aarch64_darwin_hash=$(nix-prefetch-url "$aarch64_darwin_url") +x86_64_darwin_hash=$(nix-prefetch-url "$x86_64_darwin_url") +x86_64_linux_hash=$(nix-prefetch-url "$x86_64_linux_url") -sed -i "s/x86_64-linux-version = \".*\"/x86_64-linux-version = \"${latest_linux_version}\"/" "$slack_nix" -sed -i "s/x86_64-darwin-version = \".*\"/x86_64-darwin-version = \"${latest_mac_version}\"/" "$slack_nix" -sed -i "s/aarch64-darwin-version = \".*\"/aarch64-darwin-version = \"${latest_mac_version}\"/" "$slack_nix" -sed -i "s/x86_64-linux-sha256 = \".*\"/x86_64-linux-sha256 = \"${linux_sha256}\"/" "$slack_nix" -sed -i "s/x86_64-darwin-sha256 = \".*\"/x86_64-darwin-sha256 = \"${mac_sha256}\"/" "$slack_nix" -sed -i "s/aarch64-darwin-sha256 = \".*\"/aarch64-darwin-sha256 = \"${mac_arm_sha256}\"/" "$slack_nix" +# use friendlier hashes -if ! nix-build -A slack "$nixpkgs" --arg config '{ allowUnfree = true; }'; then - echo "The updated slack failed to build." - exit 1 -fi +aarch64_darwin_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$aarch64_darwin_hash") +x86_64_darwin_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$x86_64_darwin_hash") +x86_64_linux_hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 "$x86_64_linux_hash") -echo "Successfully updated" -echo "slack: $nixpkgs_linux_version -> $latest_linux_version" +cat >sources.nix <