gemini-cli-bin: init at 0.3.4
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
{
|
||||
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
@@ -0,0 +1,34 @@
|
||||
#!/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}."
|
||||
Reference in New Issue
Block a user