Files
nixpkgs/pkgs/by-name/ge/gemini-cli/package.nix
2025-11-16 23:20:54 +08:00

91 lines
2.8 KiB
Nix

{
lib,
stdenv,
buildNpmPackage,
fetchFromGitHub,
jq,
pkg-config,
clang_20,
libsecret,
ripgrep,
nix-update-script,
}:
buildNpmPackage (finalAttrs: {
pname = "gemini-cli";
version = "0.15.3";
src = fetchFromGitHub {
owner = "google-gemini";
repo = "gemini-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-a3zigpALuuqD42n2X+5G+ol1XdSbHwLalS3ArA/cQH8=";
};
npmDepsHash = "sha256-KkMnxZ0G8PzIdksChVZoH5jMz8qeyGirN7URq08sz48=";
nativeBuildInputs = [
jq
pkg-config
]
++ lib.optionals stdenv.isDarwin [ clang_20 ]; # clang_21 breaks @vscode/vsce's optionalDependencies keytar
buildInputs = [
ripgrep
libsecret
];
preConfigure = ''
mkdir -p packages/generated
echo "export const GIT_COMMIT_INFO = { commitHash: '${finalAttrs.src.rev}' };" > packages/generated/git-commit.ts
'';
postPatch = ''
# Remove node-pty dependency from package.json
${jq}/bin/jq 'del(.optionalDependencies."node-pty")' package.json > package.json.tmp && mv package.json.tmp package.json
# Remove node-pty dependency from packages/core/package.json
${jq}/bin/jq 'del(.optionalDependencies."node-pty")' packages/core/package.json > packages/core/package.json.tmp && mv packages/core/package.json.tmp packages/core/package.json
# Get rid of auto-update
sed -i '/disableAutoUpdate: {/,/}/ s/default: false/default: true/' packages/cli/src/config/settingsSchema.ts
'';
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,share/gemini-cli}
cp -r node_modules $out/share/gemini-cli/
rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli
rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-core
rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-a2a-server
rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-test-utils
rm -f $out/share/gemini-cli/node_modules/gemini-cli-vscode-ide-companion
cp -r packages/cli $out/share/gemini-cli/node_modules/@google/gemini-cli
cp -r packages/core $out/share/gemini-cli/node_modules/@google/gemini-cli-core
cp -r packages/a2a-server $out/share/gemini-cli/node_modules/@google/gemini-cli-a2a-server
ln -s $out/share/gemini-cli/node_modules/@google/gemini-cli/dist/index.js $out/bin/gemini
chmod +x "$out/bin/gemini"
runHook postInstall
'';
passthru.updateScript = nix-update-script { };
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;
sourceProvenance = with lib.sourceTypes; [ fromSource ];
maintainers = with lib.maintainers; [
xiaoxiangmoe
FlameFlag
taranarmo
];
platforms = lib.platforms.all;
mainProgram = "gemini";
};
})