fix: nix build with dontFixup for .bun symlink issues, use root node_modules + Attic cache push
CI / typecheck + tests (push) Canceled after 0s
CI / build + deploy (Nix) — api (push) Canceled after 0s
CI / build + deploy (Nix) — mcp (push) Canceled after 0s
CI / build + deploy (Nix) — worker (push) Canceled after 0s
CI / build + deploy (web) (push) Canceled after 0s

This commit is contained in:
asepharyana
2026-08-21 17:03:28 +07:00
parent c6b0b2549a
commit aedcfbf4e7
2 changed files with 27 additions and 10 deletions
+9 -6
View File
@@ -167,8 +167,10 @@ jobs:
PROFILE="mcpedia-${SERVICE}" PROFILE="mcpedia-${SERVICE}"
# Substitute from Attic cache (fast — downloads over HTTPS) # Substitute from Attic cache (fast — downloads over HTTPS)
# Falls back to SSH copy if substitution fails # Falls back to SSH copy if substitution fails
ssh "$VPS_USER@$VPS_HOST" \ REALISE_RESULT=$(ssh "$VPS_USER@$VPS_HOST" \
"curl -s -o /dev/null -w '%{http_code}' https://attic.asepharyana.my.id/mcpedia/$(echo '$STORE_PATH' | cut -d'-' -f2).narinfo 2>/dev/null; sudo /nix/var/nix/profiles/default/bin/nix-store --realise '$STORE_PATH'" "sudo /nix/var/nix/profiles/default/bin/nix-store --realise '$STORE_PATH' 2>&1 || true")
echo "$REALISE_RESULT"
# Update profile + restart # Update profile + restart
ssh "$VPS_USER@$VPS_HOST" \ ssh "$VPS_USER@$VPS_HOST" \
"sudo /nix/var/nix/profiles/default/bin/nix-env \ "sudo /nix/var/nix/profiles/default/bin/nix-env \
@@ -236,11 +238,12 @@ jobs:
- name: Build web Nix derivation - name: Build web Nix derivation
id: build id: build
run: | run: |
REPO_ROOT="$(pwd)"
nix-build -E \ nix-build -E \
"let pkgs = import <nixpkgs> {}; in pkgs.callPackage ./web.nix { "let pkgs = import <nixpkgs> {}; in pkgs.callPackage ${REPO_ROOT}/web.nix {
webNextDir = ./apps/web/.next; webNextDir = ${REPO_ROOT}/apps/web/.next;
webPkgDir = ./apps/web; webPkgDir = ${REPO_ROOT}/apps/web;
nodeModulesPath = .; nodeModulesPath = ${REPO_ROOT};
}" \ }" \
--impure --option sandbox false --impure --option sandbox false
STORE_PATH=$(readlink result) STORE_PATH=$(readlink result)
+18 -4
View File
@@ -10,10 +10,15 @@
flake-utils.lib.eachDefaultSystem (system: flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system; }; in { let pkgs = import nixpkgs { inherit system; }; in {
packages = { packages = {
# ─── API: Hono ────────────────────────────────────────────────
# bun build bundles TS → JS. @mcpedia/* kept external (resolved from
# root node_modules at runtime). We copy the ROOT node_modules (the
# full workspace install) so all transitive deps are available.
api = pkgs.stdenvNoCC.mkDerivation { api = pkgs.stdenvNoCC.mkDerivation {
pname = "mcpedia-api"; pname = "mcpedia-api";
version = "1.0.0"; version = "1.0.0";
src = ./.; src = ./.;
dontFixup = true;
nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ]; nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ];
buildPhase = '' buildPhase = ''
export HOME=$TMPDIR export HOME=$TMPDIR
@@ -29,7 +34,8 @@
installPhase = '' installPhase = ''
mkdir -p $out/share/mcpedia-api mkdir -p $out/share/mcpedia-api
cp -r apps/api/dist $out/share/mcpedia-api/dist cp -r apps/api/dist $out/share/mcpedia-api/dist
cp -rL apps/api/node_modules $out/share/mcpedia-api/node_modules mkdir -p $out/share/mcpedia-api/node_modules
cp -r node_modules/* $out/share/mcpedia-api/node_modules/ 2>/dev/null || true
cp apps/api/package.json $out/share/mcpedia-api/ cp apps/api/package.json $out/share/mcpedia-api/
makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-api \ makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-api \
--add-flags "run dist/index.js" \ --add-flags "run dist/index.js" \
@@ -37,10 +43,12 @@
''; '';
}; };
# ─── MCP: Streamable HTTP ──────────────────────────────────────
mcp = pkgs.stdenvNoCC.mkDerivation { mcp = pkgs.stdenvNoCC.mkDerivation {
pname = "mcpedia-mcp"; pname = "mcpedia-mcp";
version = "1.0.0"; version = "1.0.0";
src = ./.; src = ./.;
dontFixup = true;
nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ]; nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ];
buildPhase = '' buildPhase = ''
export HOME=$TMPDIR export HOME=$TMPDIR
@@ -56,7 +64,8 @@
installPhase = '' installPhase = ''
mkdir -p $out/share/mcpedia-mcp mkdir -p $out/share/mcpedia-mcp
cp -r apps/mcp/dist $out/share/mcpedia-mcp/dist cp -r apps/mcp/dist $out/share/mcpedia-mcp/dist
cp -rL apps/mcp/node_modules $out/share/mcpedia-mcp/node_modules mkdir -p $out/share/mcpedia-mcp/node_modules
cp -r node_modules/* $out/share/mcpedia-mcp/node_modules/ 2>/dev/null || true
cp apps/mcp/package.json $out/share/mcpedia-mcp/ cp apps/mcp/package.json $out/share/mcpedia-mcp/
makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-mcp \ makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-mcp \
--add-flags "run dist/http.js" \ --add-flags "run dist/http.js" \
@@ -64,10 +73,14 @@
''; '';
}; };
# ─── Worker: BullMQ ────────────────────────────────────────────
worker = pkgs.stdenvNoCC.mkDerivation { worker = pkgs.stdenvNoCC.mkDerivation {
pname = "mcpedia-worker"; pname = "mcpedia-worker";
version = "1.0.0"; version = "1.0.0";
src = ./.; src = ./.;
# The .bun cache in node_modules uses symlinks that may be
# broken in the Nix store. Skip the fixup phase's symlink check.
dontFixup = true;
nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ]; nativeBuildInputs = [ pkgs.bun pkgs.makeBinaryWrapper ];
buildPhase = '' buildPhase = ''
export HOME=$TMPDIR export HOME=$TMPDIR
@@ -83,7 +96,8 @@
installPhase = '' installPhase = ''
mkdir -p $out/share/mcpedia-worker mkdir -p $out/share/mcpedia-worker
cp -r apps/worker/dist $out/share/mcpedia-worker/dist cp -r apps/worker/dist $out/share/mcpedia-worker/dist
cp -rL apps/worker/node_modules $out/share/mcpedia-worker/node_modules mkdir -p $out/share/mcpedia-worker/node_modules
cp -r node_modules/* $out/share/mcpedia-worker/node_modules/ 2>/dev/null || true
cp apps/worker/package.json $out/share/mcpedia-worker/ cp apps/worker/package.json $out/share/mcpedia-worker/
makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-worker \ makeBinaryWrapper ${pkgs.bun}/bin/bun $out/bin/mcpedia-worker \
--add-flags "run dist/index.js" \ --add-flags "run dist/index.js" \
@@ -92,4 +106,4 @@
}; };
}; };
}); });
} }