Refactor server and desktop Nix packaging

- Move shared Node module setup into `packages/common.nix`
- Rename package entrypoints under `packages/server` and `packages/desktop`
- Update flake outputs to expose `t3code-server` as the default
This commit is contained in:
2026-04-24 20:10:05 +03:00
parent f686622bc4
commit 21a137680a
6 changed files with 170 additions and 173 deletions
+106
View File
@@ -0,0 +1,106 @@
{
lib,
stdenv,
bun,
nodejs,
writableTmpDirAsHomeHook,
}: let
workspacePreparePatched = [
"apps/server/package.json"
"apps/web/package.json"
"packages/client-runtime/package.json"
"packages/contracts/package.json"
"packages/effect-acp/package.json"
"packages/effect-codex-app-server/package.json"
"packages/shared/package.json"
];
renderBunFilters = filters:
lib.concatMapStringsSep "\n" (filter: " --filter ${filter} \\") filters;
in {
inherit workspacePreparePatched;
mkNodeModules = {
pname,
version,
src,
outputHash,
filters,
extraNativeBuildInputs ? [],
impureEnvVars ? [],
extraEnv ? "",
}:
stdenv.mkDerivation {
pname = "${pname}-node-modules";
inherit version src impureEnvVars;
nativeBuildInputs =
[
bun
nodejs
writableTmpDirAsHomeHook
]
++ extraNativeBuildInputs;
dontConfigure = true;
dontFixup = true;
postPatch = ''
for packageJson in ${lib.concatStringsSep " " workspacePreparePatched}; do
substituteInPlace "$packageJson" \
--replace-fail '"prepare": "effect-language-service patch"' '"prepare": "true"'
done
'';
buildPhase = ''
runHook preBuild
export HOME="$TMPDIR"
export BUN_INSTALL_CACHE_DIR="$(mktemp -d)"
${extraEnv}
bun install \
--frozen-lockfile \
--ignore-scripts \
--linker=hoisted \
--no-progress \
${renderBunFilters filters}
runHook postBuild
'';
installPhase = ''
runHook preInstall
cp -R ./node_modules $out
runHook postInstall
'';
inherit outputHash;
outputHashAlgo = "sha256";
outputHashMode = "recursive";
};
mkNodePtyConfigurePhase = {
nodeModules,
chmodBins ? false,
}: ''
runHook preConfigure
mkdir -p ./node_modules
cp -R ${nodeModules}/. ./node_modules/
chmod -R u+rwX node_modules
if [ ${if chmodBins then "true" else "false"} = true ] && [ -d node_modules/.bin ]; then
chmod -R u+x node_modules/.bin
fi
patchShebangs node_modules
cd node_modules/node-pty
node-gyp rebuild
node scripts/post-install.js
cd "$NIX_BUILD_TOP/$sourceRoot"
runHook postConfigure
'';
}