{ description = "GlowTrack: reproducible devShell and app build outputs"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; in { # Developer shell with Node.js LTS, pnpm, git, jq devShells.default = pkgs.mkShell { packages = builtins.attrValues { inherit (pkgs) nodejs_20 pnpm git jq; }; # Tip: uncomment Playwright bits below once tests are wired (T007) # packages = builtins.attrValues { inherit (pkgs) nodejs_20 pnpm git jq playwright-driver playwright-browsers; }; # shellHook = '' # export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-browsers} # ''; }; # Package: static site output from apps/web # This derivation copies a prebuilt site (build/ or dist/) from apps/web if present. # It does not run networked installs, keeping the build pure. The actual build # step is performed via pnpm in the dev shell (see T005/T030 for CI wiring). packages.app = pkgs.stdenvNoCC.mkDerivation { pname = "glowtrack-app"; version = "0.0.0"; src = ./.; buildPhase = "true"; installPhase = '' mkdir -p "$out" if [ -d apps/web/build ]; then cp -r apps/web/build/* "$out/" elif [ -d apps/web/dist ]; then cp -r apps/web/dist/* "$out/" else echo "No prebuilt app output detected. After scaffolding (T005), run 'pnpm -C apps/web build' to populate build/ or dist/." > "$out/README.txt" fi ''; }; # Make `.#default` point to the app package for convenience packages.default = self.packages.${system}.app; } ); }