{ description = "Policy UI - Nuxt.js application"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let pkgs = nixpkgs.legacyPackages.${system}; nodePkgs = pkgs.nodePackages; pname = "policy-ui"; version = "1.0.0"; src = ./.; in { packages.policy-ui = pkgs.stdenv.mkDerivation { inherit pname version src; nativeBuildInputs = [ pkgs.pnpm pkgs.pnpmConfigHook pkgs.nodejs ]; pnpmDeps = pkgs.fetchPnpmDeps { inherit pname version src; pnpm = pkgs.pnpm; fetcherVersion = 3; # Placeholder hash - run nix build to get the correct hash hash = "sha256-b9rYE09uEFLoiymS6PUkWJvOwMnniBbvPbFp6xu+PtM="; }; env.NUXT_TELEMETRY_DISABLED = 1; buildPhase = '' pnpm build ''; installPhase = '' mkdir -p $out cp -r .output/* $out ''; }; packages.dockerImage = pkgs.dockerTools.buildLayeredImage { name = "policy-ui"; contents = [ pkgs.nodejs self.packages.${system}.policy-ui ]; config = { Cmd = [ "node" "/server/index.mjs" ]; Env = [ "NODE_ENV=production" "PORT=3000" "HOST=0.0.0.0" "NUXT_TELEMETRY_DISABLED=1" ]; }; }; packages.default = self.packages.${system}.policy-ui; devShells.default = pkgs.mkShell { buildInputs = with pkgs; [ nodejs pnpm kubernetes-helm ]; }; }); }