gemini-cli-bin: init at 0.3.4 (#432759)

kirillrdy 6f8b40d3 7b3ad5c9

Changed files
+95
maintainers
pkgs
by-name
ge
gemini-cli-bin
+6
maintainers/maintainer-list.nix
···
githubId = 40217331;
name = "LizeLive";
+
ljxfstorm = {
+
name = "Likai Liu";
+
email = "ljxf.storm@live.cn";
+
github = "ljxfstorm";
+
githubId = 7077478;
+
};
llakala = {
email = "elevenaka11@gmail.com";
github = "llakala";
+55
pkgs/by-name/ge/gemini-cli-bin/package.nix
···
+
{
+
lib,
+
stdenvNoCC,
+
fetchurl,
+
nodejs,
+
gitUpdater,
+
}:
+
let
+
owner = "google-gemini";
+
repo = "gemini-cli";
+
asset = "gemini.js";
+
in
+
stdenvNoCC.mkDerivation (finalAttrs: {
+
pname = "gemini-cli-bin";
+
version = "0.3.4";
+
+
src = fetchurl {
+
url = "https://github.com/${owner}/${repo}/releases/download/v${finalAttrs.version}/${asset}";
+
hash = "sha256-aVcizpbzV1hPsuMSGRxgMGXTyF+0yBqGk7EwPnKFDyQ=";
+
};
+
+
phases = [
+
"installPhase"
+
"fixupPhase"
+
];
+
+
strictDeps = true;
+
+
buildInputs = [ nodejs ];
+
+
installPhase = ''
+
runHook preInstall
+
+
install -D "$src" "$out/bin/gemini"
+
+
runHook postInstall
+
'';
+
+
passthru.updateScript = [
+
./update-asset.sh
+
"${owner}/${repo}"
+
"${asset}"
+
];
+
+
meta = {
+
description = "AI agent that brings the power of Gemini directly into your terminal";
+
homepage = "https://github.com/google-gemini/gemini-cli";
+
license = lib.licenses.asl20;
+
maintainers = with lib.maintainers; [ ljxfstorm ];
+
mainProgram = "gemini";
+
platforms = lib.platforms.linux ++ lib.platforms.darwin;
+
sourceProvenance = [ lib.sourceTypes.binaryBytecode ];
+
priority = 10;
+
};
+
})
+34
pkgs/by-name/ge/gemini-cli-bin/update-asset.sh
···
+
#!/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"
+
RELEASE_ID="latest"
+
+
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}")"
+
{
+
read -r LATEST_VER
+
read -r ASSET_DIGEST
+
} < <(curl --fail -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} "https://api.github.com/repos/${GITHUB_REPO}/releases/${RELEASE_ID}" | jq -r ".tag_name, (.assets[] | select(.name == \"${ASSET_NAME}\") | .digest)")
+
+
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}."