wdt: 1.27.1612021-unstable-2024-08-22 -> 1.27.1612021-unstable-2024-11-14 (#359716)
[NixPkgs.git] / pkgs / by-name / he / helix-gpt / package.nix
blob6b6f7a8955bb6dbfa7e95672f29aef2c49180c3f
1 { stdenv, lib, fetchFromGitHub, bun, makeBinaryWrapper }:
2 let
3   pin = lib.importJSON ./pin.json;
4   src = fetchFromGitHub {
5     owner = "leona";
6     repo = "helix-gpt";
7     rev = pin.version;
8     hash = pin.srcHash;
9   };
10   node_modules = stdenv.mkDerivation {
11     pname = "helix-gpt-node_modules";
12     inherit src;
13     version = pin.version;
14     impureEnvVars = lib.fetchers.proxyImpureEnvVars
15       ++ [ "GIT_PROXY_COMMAND" "SOCKS_SERVER" ];
16     nativeBuildInputs = [ bun ];
17     dontConfigure = true;
18     buildPhase = ''
19       bun install --no-progress --frozen-lockfile
20     '';
21     installPhase = ''
22       mkdir -p $out/node_modules
24       cp -R ./node_modules $out
25     '';
26     outputHash = pin."${stdenv.system}";
27     outputHashAlgo = "sha256";
28     outputHashMode = "recursive";
29   };
31 stdenv.mkDerivation {
32   pname = "helix-gpt";
33   version = pin.version;
34   inherit src;
35   nativeBuildInputs = [ makeBinaryWrapper ];
37   dontConfigure = true;
38   dontBuild = true;
40   installPhase = ''
41     runHook preInstall
43     mkdir -p $out/bin
45     ln -s ${node_modules}/node_modules $out
46     cp -R ./* $out
48     # bun is referenced naked in the package.json generated script
49     makeBinaryWrapper ${bun}/bin/bun $out/bin/helix-gpt \
50       --prefix PATH : ${lib.makeBinPath [ bun ]} \
51       --add-flags "run --prefer-offline --no-install --cwd $out ./src/app.ts"
53     runHook postInstall
54   '';
56   meta = with lib; {
57     homepage = "https://github.com/leona/helix-gpt";
58     changelog = "https://github.com/leona/helix-gpt/releases/tag/${src.rev}";
59     description = "Code completion LSP for Helix with support for Copilot + OpenAI";
60     mainProgram = "helix-gpt";
61     maintainers = with maintainers; [ happysalada ];
62     license = with licenses; [ mit ];
63     platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" "aarch64-linux" ];
64   };