{ lib, src, stdenv, bun, makeBinaryWrapper, node-gyp, nodejs, python3, writableTmpDirAsHomeHook, }: let common = import ../common.nix { inherit lib stdenv bun nodejs writableTmpDirAsHomeHook ; }; serverPackageJson = lib.importJSON "${src}/apps/server/package.json"; pname = "t3code-server"; version = serverPackageJson.version; in stdenv.mkDerivation (finalAttrs: { inherit pname version; inherit src; strictDeps = true; nodeModules = common.mkNodeModules { inherit (finalAttrs) pname version src; outputHash = "sha256-l0BXsHRRFPyWjdxWedAdS8K7VdXSzAfw5c+0caqzT6M="; filters = [ "./apps/server" "./apps/web" "./packages/client-runtime" "./packages/contracts" "./packages/effect-acp" "./packages/effect-codex-app-server" "./packages/shared" ]; }; nativeBuildInputs = [ bun makeBinaryWrapper node-gyp nodejs python3 writableTmpDirAsHomeHook ]; configurePhase = common.mkNodePtyConfigurePhase { nodeModules = finalAttrs.nodeModules; }; buildPhase = '' runHook preBuild export HOME="$TMPDIR" export BUN_INSTALL_CACHE_DIR="$(mktemp -d)" bun run --cwd apps/web build bun run --cwd apps/server build runHook postBuild ''; installPhase = '' runHook preInstall mkdir -p "$out/libexec/t3code/apps/server" mkdir -p "$out/libexec/t3code/apps" mkdir -p "$out/libexec/t3code/packages" cp -R --no-preserve=mode node_modules "$out/libexec/t3code/" cp -R --no-preserve=mode apps/server/dist "$out/libexec/t3code/apps/server/" cp -R --no-preserve=mode apps/web "$out/libexec/t3code/apps/" cp -R --no-preserve=mode packages/client-runtime "$out/libexec/t3code/packages/" cp -R --no-preserve=mode packages/contracts "$out/libexec/t3code/packages/" cp -R --no-preserve=mode packages/effect-acp "$out/libexec/t3code/packages/" cp -R --no-preserve=mode packages/effect-codex-app-server "$out/libexec/t3code/packages/" cp -R --no-preserve=mode packages/shared "$out/libexec/t3code/packages/" makeWrapper ${lib.getExe nodejs} "$out/bin/t3" \ --add-flags "$out/libexec/t3code/apps/server/dist/bin.mjs" runHook postInstall ''; meta = { description = "t3 code web/server app"; homepage = "https://github.com/pingdotgg/t3code"; license = lib.licenses.mit; mainProgram = "t3"; platforms = lib.platforms.unix; sourceProvenance = with lib.sourceTypes; [fromSource]; }; })