1{
2 lib,
3 buildNpmPackage,
4 fetchFromGitHub,
5 fetchNpmDeps,
6 gitUpdater,
7}:
8
9buildNpmPackage (finalAttrs: {
10 pname = "gemini-cli";
11 version = "0.1.14";
12
13 src = fetchFromGitHub {
14 owner = "google-gemini";
15 repo = "gemini-cli";
16 tag = "v${finalAttrs.version}";
17 hash = "sha256-u73aqh7WnfetHj/64/HyzSR6aJXRKt0OXg3bddhhQq8=";
18 };
19
20 npmDeps = fetchNpmDeps {
21 inherit (finalAttrs) src;
22 hash = "sha256-9T31QlffPP6+ryRVN/7t0iMo+2AgwPb6l6CkYh6839U=";
23 };
24
25 preConfigure = ''
26 mkdir -p packages/generated
27 echo "export const GIT_COMMIT_INFO = { commitHash: '${finalAttrs.src.rev}' };" > packages/generated/git-commit.ts
28 '';
29
30 installPhase = ''
31 runHook preInstall
32 mkdir -p $out/{bin,share/gemini-cli}
33
34 cp -r node_modules $out/share/gemini-cli/
35
36 rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli
37 rm -f $out/share/gemini-cli/node_modules/@google/gemini-cli-core
38 rm -f $out/share/gemini-cli/node_modules/gemini-cli-vscode-ide-companion
39 cp -r packages/cli $out/share/gemini-cli/node_modules/@google/gemini-cli
40 cp -r packages/core $out/share/gemini-cli/node_modules/@google/gemini-cli-core
41
42 ln -s $out/share/gemini-cli/node_modules/@google/gemini-cli/dist/index.js $out/bin/gemini
43 runHook postInstall
44 '';
45
46 postInstall = ''
47 chmod +x "$out/bin/gemini"
48 '';
49
50 passthru.updateScript = gitUpdater { };
51
52 meta = {
53 description = "AI agent that brings the power of Gemini directly into your terminal";
54 homepage = "https://github.com/google-gemini/gemini-cli";
55 license = lib.licenses.asl20;
56 maintainers = with lib.maintainers; [ donteatoreo ];
57 platforms = lib.platforms.all;
58 mainProgram = "gemini";
59 };
60})