149 lines
3.7 KiB
Nix
149 lines
3.7 KiB
Nix
{ self, inputs, ... }:
|
|
{
|
|
perSystem =
|
|
{
|
|
pkgs,
|
|
lib,
|
|
system,
|
|
...
|
|
}:
|
|
let
|
|
version = "2026-04-02";
|
|
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "coygeek";
|
|
repo = "2026-03-31-t3-opencode";
|
|
rev = "24a542c6f8731476f333298662f273c164ff2446";
|
|
hash = "sha256-Z4BhkHdH9iEW45lstyklKwzQ1/qDXNJN8pdXlfoZYaY=";
|
|
};
|
|
|
|
nodeModules = pkgs.stdenvNoCC.mkDerivation {
|
|
pname = "t3code-node_modules";
|
|
inherit version src;
|
|
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
pkgs.bun
|
|
pkgs.nodejs
|
|
pkgs.writableTmpDirAsHomeHook
|
|
];
|
|
|
|
dontConfigure = true;
|
|
dontFixup = true;
|
|
|
|
postPatch = ''
|
|
for packageJson in \
|
|
packages/contracts/package.json \
|
|
packages/shared/package.json
|
|
do
|
|
substituteInPlace "$packageJson" \
|
|
--replace-fail '"prepare": "effect-language-service patch",' '"prepare": "true",'
|
|
done
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
bun install \
|
|
--ignore-scripts \
|
|
--no-progress \
|
|
--frozen-lockfile \
|
|
--filter ./apps/server \
|
|
--filter ./apps/web \
|
|
--filter ./packages/contracts \
|
|
--filter ./packages/shared
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out"
|
|
find . -type d -name node_modules \
|
|
-exec cp -R --parents {} "$out" \;
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
outputHash = "sha256-YVoHCTiufVFc3G2kJT2Li+JSnht54ZgtjtnJdsfrgO0=";
|
|
outputHashAlgo = "sha256";
|
|
outputHashMode = "recursive";
|
|
};
|
|
in
|
|
{
|
|
packages.t3code = pkgs.stdenv.mkDerivation {
|
|
pname = "t3code";
|
|
inherit version src;
|
|
|
|
strictDeps = true;
|
|
|
|
nativeBuildInputs = [
|
|
pkgs.bun
|
|
pkgs.makeBinaryWrapper
|
|
pkgs.node-gyp
|
|
pkgs.nodejs
|
|
pkgs.python3
|
|
pkgs.writableTmpDirAsHomeHook
|
|
];
|
|
|
|
configurePhase = ''
|
|
runHook preConfigure
|
|
|
|
cp -R ${nodeModules}/. .
|
|
|
|
chmod -R u+rwX node_modules
|
|
patchShebangs node_modules
|
|
|
|
cd node_modules/.bun/node-pty@*/node_modules/node-pty
|
|
node-gyp rebuild
|
|
node scripts/post-install.js
|
|
cd "$NIX_BUILD_TOP/$sourceRoot"
|
|
|
|
runHook postConfigure
|
|
'';
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
bun run --cwd apps/web build
|
|
bun run --cwd apps/server build
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out/libexec/t3code/apps/server"
|
|
cp -R --no-preserve=mode node_modules "$out/libexec/t3code/"
|
|
cp -R --no-preserve=mode apps/server/{node_modules,dist} \
|
|
"$out/libexec/t3code/apps/server/"
|
|
|
|
rm -f \
|
|
"$out/libexec/t3code/apps/server/node_modules/@t3tools/contracts" \
|
|
"$out/libexec/t3code/apps/server/node_modules/@t3tools/shared" \
|
|
"$out/libexec/t3code/apps/server/node_modules/@t3tools/web"
|
|
|
|
for wsDir in "$out"/libexec/t3code/node_modules/.bun/ws@*/node_modules/ws; do
|
|
ln -s "$wsDir" \
|
|
"$out/libexec/t3code/apps/server/node_modules/ws"
|
|
break
|
|
done
|
|
|
|
makeWrapper ${lib.getExe pkgs.nodejs} "$out/bin/t3" \
|
|
--add-flags "$out/libexec/t3code/apps/server/dist/index.mjs"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
description = "T3 Code with OpenCode";
|
|
homepage = "https://t3.codes";
|
|
license = lib.licenses.mit;
|
|
mainProgram = "t3";
|
|
};
|
|
};
|
|
};
|
|
}
|