add policy-ui build

This commit is contained in:
2026-04-15 12:35:50 -05:00
parent ff2d7b18b5
commit 1023f99642
8 changed files with 9168 additions and 13039 deletions

View File

@@ -1,5 +1,5 @@
{
description = "test";
description = "policy-ui - Policy management dashboard";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
@@ -10,15 +10,88 @@
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
lib = pkgs.lib;
in {
devShell =
pkgs.mkShell {
buildInputs = with pkgs;
[
nodejs
vue-language-server
];
pname = "policy-ui";
version = "1.0.0";
pnpmDeps = pkgs.fetchPnpmDeps {
inherit pname version;
src = lib.cleanSource ./.;
pnpm = pkgs.pnpm;
fetcherVersion = 3;
hash = "sha256-v1vdqb3ruLB9vvPzxjT+11W4jG/MvoCPVXZPHHE9eGs=";
};
});
policy-ui = pkgs.stdenv.mkDerivation {
inherit pname version;
src = lib.cleanSource ./.;
nativeBuildInputs = [
pkgs.pnpmConfigHook
pkgs.pnpm
pkgs.nodejs
];
inherit pnpmDeps;
buildPhase = ''
runHook preBuild
export NUXT_TELEMETRY_DISABLED=1
pnpm build
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r ./.output $out/
runHook postInstall
'';
};
dockerImage = pkgs.dockerTools.buildLayeredImage {
name = "policy-ui";
contents = [
policy-ui
pkgs.busybox
pkgs.shadow
];
config = {
Cmd = [
"${pkgs.nodejs}/bin/node"
"${policy-ui}/.output/server/index.mjs"
];
Env = [
"HOST=0.0.0.0"
"PORT=3000"
"NODE_ENV=production"
];
};
};
in
{
packages = {
default = policy-ui;
inherit policy-ui;
dockerImage = dockerImage;
};
devShell =
pkgs.mkShell {
buildInputs = with pkgs; [
nodejs
vue-language-server
pnpm
];
};
}
);
}