diff --git a/pkgs/development/tools/coder/default.nix b/pkgs/development/tools/coder/default.nix index 5557c4db17e5..bee71dc2aeae 100644 --- a/pkgs/development/tools/coder/default.nix +++ b/pkgs/development/tools/coder/default.nix @@ -1,4 +1,5 @@ { lib +, channel ? "stable" , fetchurl , installShellFiles , makeBinaryWrapper @@ -9,18 +10,33 @@ let inherit (stdenvNoCC.hostPlatform) system; + + channels = { + stable = { + version = "2.9.3"; + hash = { + x86_64-linux = "sha256-6VS21x2egWBV6eJqRCBGG7mEGPIDFtY9GN6Ry4ilC70="; + x86_64-darwin = "sha256-UBUGjA+jUkT6p9714l8IvDDI/qhWNctVFOvcA2S5kQU="; + aarch64-linux = "sha256-2QAahqcM2gi3lT+18q2Nm9GNqVsqzX3RajBsTn+KB1c="; + aarch64-darwin = "sha256-uEH7Y7c9BcU/Q/jwx/inFMvUrgm2dUruID+FJL+rA6Y="; + }; + }; + mainline = { + version = "2.10.1"; + hash = { + x86_64-linux = "sha256-jNPL30e5xvyajlIqivtEpSb3cRhfgFhLFlC+CaLY2IM="; + x86_64-darwin = "sha256-U1eQaYwnm/mdQoZ8YxK/+s3HboVfMIAtdI7aQnCiDM8="; + aarch64-linux = "sha256-YtSyKZYG8vdubZUfo2FjEoVwSF82TXzeLJjPpHqgFDk="; + aarch64-darwin = "sha256-aQSiXK7voP5/mPFIscfTnSc4Ae5/f+WW8MR6ZtuC/eY="; + }; + }; + }; in stdenvNoCC.mkDerivation (finalAttrs: { pname = "coder"; - version = "2.9.1"; - + version = channels.${channel}.version; src = fetchurl { - hash = { - x86_64-linux = "sha256-r4+u/s/dOn2GhyhEROu8i03QY3VA/bIyO/Yj7KSqicY="; - x86_64-darwin = "sha256-uShCmMvb5OcinqP0CmrlP9QAJkjfG3g1QuHE4JRDOjE="; - aarch64-linux = "sha256-tvpzfJ95YYfCY5V4iayjAmY5PDw+1uHUhY5F3pv/2Uk="; - aarch64-darwin = "sha256-sP9HnB2DzAU9IvL3+QPmIFLvRkGkoxSoa68uXGQrNkw="; - }.${system}; + hash = (channels.${channel}.hash).${system}; url = let diff --git a/pkgs/development/tools/coder/update.sh b/pkgs/development/tools/coder/update.sh index cf6febe7d823..ebd40e3d5adb 100755 --- a/pkgs/development/tools/coder/update.sh +++ b/pkgs/development/tools/coder/update.sh @@ -5,12 +5,13 @@ set -eu -o pipefail cd "$(dirname "${BASH_SOURCE[0]}")" -LATEST_TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} --silent https://api.github.com/repos/coder/coder/releases/latest | jq -r '.tag_name') -LATEST_VERSION=$(echo ${LATEST_TAG} | sed 's/^v//') +# Fetch the latest stable version +LATEST_STABLE_TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} --silent https://api.github.com/repos/coder/coder/releases/latest | jq -r '.tag_name') +LATEST_STABLE_VERSION=$(echo ${LATEST_STABLE_TAG} | sed 's/^v//') -# change version number -sed -e "s/version =.*;/version = \"$LATEST_VERSION\";/g" \ - -i ./default.nix +# Fetch the latest mainline version +LATEST_MAINLINE_TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} --silent https://api.github.com/repos/coder/coder/releases | jq -r '.[0].tag_name') +LATEST_MAINLINE_VERSION=$(echo ${LATEST_MAINLINE_TAG} | sed 's/^v//') # Define the platforms declare -A ARCHS=(["x86_64-linux"]="linux_amd64.tar.gz" @@ -18,15 +19,33 @@ declare -A ARCHS=(["x86_64-linux"]="linux_amd64.tar.gz" ["x86_64-darwin"]="darwin_amd64.zip" ["aarch64-darwin"]="darwin_arm64.zip") -# Update hashes for each architecture -for ARCH in "${!ARCHS[@]}"; do - URL="https://github.com/coder/coder/releases/download/v${LATEST_VERSION}/coder_${LATEST_VERSION}_${ARCHS[$ARCH]}" - echo "Fetching hash for $ARCH..." +update_version_and_hashes() { + local version=$1 + local channel=$2 - # Fetch the new hash using nix-prefetch-url - NEW_HASH=$(nix-prefetch-url --type sha256 $URL) - SRI_HASH=$(nix hash to-sri --type sha256 $NEW_HASH) + # Update version number, using '#' as delimiter + sed -i "/${channel} = {/,/};/{ + s#^\(\s*\)version = .*#\1version = \"$version\";# + }" ./default.nix - # Update the Nix file with the new hash - sed -i "s|${ARCH} = \"sha256-.*\";|${ARCH} = \"${SRI_HASH}\";|" ./default.nix -done + # Update hashes for each architecture + for ARCH in "${!ARCHS[@]}"; do + local URL="https://github.com/coder/coder/releases/download/v${version}/coder_${version}_${ARCHS[$ARCH]}" + echo "Fetching hash for $channel/$ARCH..." + + # Fetch the new hash using nix-prefetch-url + local NEW_HASH=$(nix-prefetch-url --type sha256 $URL) + local SRI_HASH=$(nix hash to-sri --type sha256 $NEW_HASH) + + # Update the Nix file with the new hash, using '#' as delimiter and preserving indentation + sed -i "/${channel} = {/,/};/{ + s#^\(\s*\)${ARCH} = .*#\1${ARCH} = \"${SRI_HASH}\";# + }" ./default.nix + done +} + +# Update stable channel +update_version_and_hashes $LATEST_STABLE_VERSION "stable" + +# Update mainline channel +update_version_and_hashes $LATEST_MAINLINE_VERSION "mainline"