diff --git a/pkgs/by-name/ge/gemini-cli-bin/package.nix b/pkgs/by-name/ge/gemini-cli-bin/package.nix index 4e4a86d68623..0925a0a919b0 100644 --- a/pkgs/by-name/ge/gemini-cli-bin/package.nix +++ b/pkgs/by-name/ge/gemini-cli-bin/package.nix @@ -3,25 +3,22 @@ stdenvNoCC, fetchurl, nodejs, - gitUpdater, + writableTmpDirAsHomeHook, + nix-update-script, }: -let - owner = "google-gemini"; - repo = "gemini-cli"; - asset = "gemini.js"; -in stdenvNoCC.mkDerivation (finalAttrs: { pname = "gemini-cli-bin"; - version = "0.6.0"; + version = "0.6.1"; src = fetchurl { - url = "https://github.com/${owner}/${repo}/releases/download/v${finalAttrs.version}/${asset}"; - hash = "sha256-jmZvL4Rst3238H2BdZ/bQuddFkFcFLRABJ1wTHm8qPM="; + url = "https://github.com/google-gemini/gemini-cli/releases/download/v${finalAttrs.version}/gemini.js"; + hash = "sha256-gTd+uw5geR7W87BOiE6YmDDJ4AiFlYxbuLE2GWgg0kw="; }; phases = [ "installPhase" "fixupPhase" + "installCheckPhase" ]; strictDeps = true; @@ -36,11 +33,23 @@ stdenvNoCC.mkDerivation (finalAttrs: { runHook postInstall ''; - passthru.updateScript = [ - ./update-asset.sh - "${owner}/${repo}" - "${asset}" + doInstallCheck = true; + nativeInstallCheckInputs = [ + writableTmpDirAsHomeHook ]; + # versionCheckHook cannot be used because the reported version might be incorrect (e.g., 0.6.1 returns 0.6.0). + installCheckPhase = '' + runHook preInstallCheck + + "$out/bin/gemini" -v + + runHook postInstallCheck + ''; + + passthru.updateScript = nix-update-script { + # Ignore `preview` and `nightly` tags + extraArgs = [ "--version-regex=^v([0-9.]+)$" ]; + }; meta = { description = "AI agent that brings the power of Gemini directly into your terminal"; diff --git a/pkgs/by-name/ge/gemini-cli-bin/update-asset.sh b/pkgs/by-name/ge/gemini-cli-bin/update-asset.sh deleted file mode 100755 index 1fce69948530..000000000000 --- a/pkgs/by-name/ge/gemini-cli-bin/update-asset.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i bash -p gnugrep curl jq gnused - -set -euo pipefail - -cd "$(dirname "${BASH_SOURCE[0]}")" - -NIX_FILE="package.nix" - -GITHUB_REPO="$1" -ASSET_NAME="$2" -REV_PREFIX="${3:-v}" - -CURRENT_VER="$(grep -oP 'version = "\K[^"]+' "${NIX_FILE}")" -CURRENT_HASH="$(grep -oP 'hash = "\K[^"]+' "${NIX_FILE}")" - -JQ_FILTER='[.[] | select((.tag_name | test("preview|nightly")) | not)] | - first | .tag_name, (.assets[] | select(.name == $asset_name) | .digest)' - -{ - read -r LATEST_VER - read -r ASSET_DIGEST -} < <( - curl --fail -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} \ - "https://api.github.com/repos/${GITHUB_REPO}/releases" | - jq -r --arg asset_name "${ASSET_NAME}" "${JQ_FILTER}" -) - -LATEST_VER="${LATEST_VER#"${REV_PREFIX}"}" - -if [[ "${LATEST_VER}" == "${CURRENT_VER}" ]]; then - echo "Up to date." - exit 0 -fi - -LATEST_HASH="$(nix-hash --to-sri "${ASSET_DIGEST}")" - -sed -i "s#hash = \"${CURRENT_HASH}\";#hash = \"${LATEST_HASH}\";#g" "${NIX_FILE}" -sed -i "s#version = \"${CURRENT_VER}\";#version = \"${LATEST_VER}\";#g" "${NIX_FILE}" - -echo "Successfully updated from ${CURRENT_VER} to version ${LATEST_VER}."