add t3code

This commit is contained in:
jackjohn7 2026-04-03 00:48:29 -05:00
parent cb21e02ac7
commit 02c94fa838
4 changed files with 265 additions and 3 deletions

View file

@ -14,6 +14,7 @@
htop
dbeaver-bin
self.packages.${pkgs.stdenv.hostPlatform.system}.ralph
self.packages.${pkgs.stdenv.hostPlatform.system}.t3code
];
programs.zoxide = {
enable = true;

View file

@ -0,0 +1,149 @@
{ 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";
};
};
};
}