aboutsummaryrefslogtreecommitdiff
path: root/pkgs/copilot-api/default.nix
diff options
context:
space:
mode:
authorCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-03-06 09:34:57 -0600
committerCollin Williams <96917990+bluedragon1221@users.noreply.github.com>2026-03-06 12:00:17 -0600
commit9561853d2c5c18749dd7d8d3eca25a360e2d8dfe (patch)
tree697e4bfc4a1f14d72f082f11c7a7b92fdecd0061 /pkgs/copilot-api/default.nix
parente4a00e31c5a0a343749963598fa5d7faa49d60c1 (diff)
Add copilot-api package and service
- Package copilot-api (GitHub Copilot API proxy) using bun - Create systemd service module for copilot-api - Enable service on ganymede listening on localhost:4141 - Add SSH port forwarding from mercury to ganymede for copilot-api - Update gitignore to exclude Claude Code artifacts Co-Authored-By: Claude (claude-sonnet-4.5) <noreply@anthropic.com>
Diffstat (limited to 'pkgs/copilot-api/default.nix')
-rw-r--r--pkgs/copilot-api/default.nix93
1 files changed, 93 insertions, 0 deletions
diff --git a/pkgs/copilot-api/default.nix b/pkgs/copilot-api/default.nix
new file mode 100644
index 0000000..a66fe1a
--- /dev/null
+++ b/pkgs/copilot-api/default.nix
@@ -0,0 +1,93 @@
+{
+ pkgs,
+ lib,
+ ...
+}: let
+ inherit (pkgs) stdenv bun makeBinaryWrapper fetchFromGitHub;
+
+ node_modules = stdenv.mkDerivation {
+ pname = "copilot-api-node_modules";
+ version = "0.7.0";
+
+ src = fetchFromGitHub {
+ owner = "ericc-ch";
+ repo = "copilot-api";
+ tag = "v0.7.0";
+ hash = "sha256-rUUqf9QalVZDN3aw9ze5Uh+y5xvH6zdSgGN6ZLDjkDQ=";
+ };
+
+ nativeBuildInputs = [bun];
+
+ impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+ dontPatchShebangs = true;
+
+ patchPhase = ''
+ # Remove prepare script that tries to setup git hooks
+ sed -i '/"prepare":/d' package.json
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ export HOME=$TMPDIR
+ bun install --no-progress --frozen-lockfile
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out
+ cp -R ./node_modules $out
+ runHook postInstall
+ '';
+
+ outputHash = "sha256-+AH8eRG3SwwU86Pa/hFSW5nWD0v1po6z7xoLKUzq3qY=";
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ };
+in
+ stdenv.mkDerivation {
+ pname = "copilot-api";
+ version = "0.7.0";
+
+ src = fetchFromGitHub {
+ owner = "ericc-ch";
+ repo = "copilot-api";
+ tag = "v0.7.0";
+ hash = "sha256-rUUqf9QalVZDN3aw9ze5Uh+y5xvH6zdSgGN6ZLDjkDQ=";
+ };
+
+ nativeBuildInputs = [makeBinaryWrapper];
+ buildInputs = [bun pkgs.nodejs];
+
+ configurePhase = ''
+ runHook preConfigure
+ # Don't copy node_modules - let bun install them fresh
+ runHook postConfigure
+ '';
+
+ buildPhase = ''
+ runHook preBuild
+ export HOME=$TMPDIR
+ # Use the cached node_modules
+ cp -R ${node_modules}/node_modules .
+ chmod -R +w node_modules
+ # Try using bun's native build with correct entry point
+ mkdir -p dist
+ ${bun}/bin/bun build src/main.ts --outdir dist --target bun --format esm --sourcemap
+ runHook postBuild
+ '';
+
+ installPhase = ''
+ runHook preInstall
+
+ mkdir -p $out/lib/copilot-api
+ cp -r dist node_modules package.json $out/lib/copilot-api/
+
+ mkdir -p $out/bin
+ makeWrapper ${bun}/bin/bun $out/bin/copilot-api \
+ --prefix PATH : ${lib.makeBinPath [bun]} \
+ --add-flags "$out/lib/copilot-api/dist/main.js"
+
+ runHook postInstall
+ '';
+ }