2026-04-18 08:25:39 -07:00
|
|
|
# nix/web.nix — Hermes Web Dashboard (Vite/React) frontend build
|
2026-04-20 16:12:28 -04:00
|
|
|
{ pkgs, hermesNpmLib, ... }:
|
2026-04-18 08:25:39 -07:00
|
|
|
let
|
2026-04-20 16:12:28 -04:00
|
|
|
npm = hermesNpmLib.mkNpmPassthru { folder = "web"; attr = "web"; pname = "hermes-web"; };
|
2026-04-30 13:22:30 -04:00
|
|
|
|
2026-05-31 19:48:07 -04:00
|
|
|
packageJson = builtins.fromJSON (builtins.readFile (npm.src + "/web/package.json"));
|
2026-04-30 13:22:30 -04:00
|
|
|
version = packageJson.version;
|
2026-04-18 08:25:39 -07:00
|
|
|
in
|
2026-04-20 16:12:28 -04:00
|
|
|
pkgs.buildNpmPackage (npm // {
|
2026-04-18 08:25:39 -07:00
|
|
|
pname = "hermes-web";
|
2026-05-31 19:48:07 -04:00
|
|
|
inherit version;
|
2026-04-18 08:25:39 -07:00
|
|
|
|
|
|
|
|
doCheck = false;
|
|
|
|
|
|
|
|
|
|
buildPhase = ''
|
2026-05-31 19:48:07 -04:00
|
|
|
# Build from web/ so vite.config.ts and tsconfig resolve correctly.
|
|
|
|
|
# The workspace root's node_modules/ is at ../node_modules/.
|
|
|
|
|
cd web
|
|
|
|
|
node ../node_modules/typescript/bin/tsc -b
|
|
|
|
|
# outDir in vite.config.ts points to ../hermes_cli/web_dist for the
|
|
|
|
|
# monorepo layout. Override with --outDir dist for the nix build.
|
|
|
|
|
node ../node_modules/vite/bin/vite.js build --outDir dist
|
|
|
|
|
|
|
|
|
|
# Return to source root so installPhase paths are correct.
|
|
|
|
|
cd ..
|
2026-04-18 08:25:39 -07:00
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
installPhase = ''
|
|
|
|
|
runHook preInstall
|
2026-05-31 19:48:07 -04:00
|
|
|
# vite writes to web/dist/ (we cd'd there, overrode outDir, then cd'd back).
|
|
|
|
|
cp -r web/dist $out
|
2026-04-18 08:25:39 -07:00
|
|
|
runHook postInstall
|
|
|
|
|
'';
|
2026-04-20 16:12:28 -04:00
|
|
|
})
|