Unverified Commit 6f8b40d3 authored by kirillrdy's avatar kirillrdy Committed by GitHub
Browse files

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

parents 7b3ad5c9 31a558c5
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -14727,6 +14727,12 @@
    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 −0
Original line number Diff line number Diff line
{
  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
Original line number Diff line number Diff line
#!/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}."