feat(nix_models): replace inventory model by holistic clan model

This commit is contained in:
Johannes Kirschbauer
2025-05-27 10:27:17 +02:00
parent 7957fbaa4f
commit 1ef2e13c85
5 changed files with 22 additions and 12 deletions

View File

@@ -1,4 +1,9 @@
{ self, inputs, ... }:
{
self,
inputs,
options,
...
}:
let
inputOverrides = builtins.concatStringsSep " " (
builtins.map (input: " --override-input ${input} ${inputs.${input}}") (builtins.attrNames inputs)
@@ -28,6 +33,7 @@ in
legacyPackages.schemas = (
import ./schemas {
flakeOptions = options;
inherit
pkgs
self

View File

@@ -2,6 +2,7 @@
self,
self',
pkgs,
flakeOptions,
...
}:
let
@@ -21,6 +22,8 @@ let
import ../build-inventory/interface.nix { inherit (self) clanLib; }
);
clanSchema = jsonLib.parseOptions (flakeOptions.clan.type.getSubOptions [ "clan" ]) { };
renderSchema = pkgs.writers.writePython3Bin "render-schema" {
flakeIgnore = [
"F401"
@@ -28,12 +31,12 @@ let
];
} ./render_schema.py;
inventory-schema-abstract = pkgs.stdenv.mkDerivation {
name = "inventory-schema-files";
clan-schema-abstract = pkgs.stdenv.mkDerivation {
name = "clan-schema-files";
buildInputs = [ pkgs.cue ];
src = ./.;
buildPhase = ''
export SCHEMA=${builtins.toFile "inventory-schema.json" (builtins.toJSON inventorySchema)}
export SCHEMA=${builtins.toFile "clan-schema.json" (builtins.toJSON clanSchema)}
cp $SCHEMA schema.json
# Also generate a CUE schema version that is derived from the JSON schema
cue import -f -p compose -l '#Root:' schema.json
@@ -45,11 +48,13 @@ let
in
{
inherit
flakeOptions
frontMatterSchema
clanSchema
inventorySchema
modulesSchema
renderSchema
inventory-schema-abstract
clan-schema-abstract
;
# Inventory schema, with the modules schema added per role

View File

@@ -2,7 +2,7 @@
set -euo pipefail
jsonSchema=$(nix build .#schemas.inventory-schema-abstract --print-out-paths)/schema.json
clanSchema=$(nix build .#schemas.clan-schema-abstract --print-out-paths)/schema.json
SCRIPT_DIR=$(dirname "$0")
cd "$SCRIPT_DIR"
nix run .#classgen -- "$jsonSchema" "./inventory.py"
nix run .#classgen -- "$clanSchema" "./clan.py"

View File

@@ -106,10 +106,10 @@
src = ./clan_lib/nix_models;
env = {
classFile = "inventory.py";
classFile = "clan.py";
};
installPhase = ''
${self'.packages.classgen}/bin/classgen ${self'.legacyPackages.schemas.inventory-schema-abstract}/schema.json b_classes.py
${self'.packages.classgen}/bin/classgen ${self'.legacyPackages.schemas.clan-schema-abstract}/schema.json b_classes.py
file1=$classFile
file2=b_classes.py

View File

@@ -46,8 +46,7 @@ mkShell {
# Add clan command to PATH
export PATH="$PKG_ROOT/bin":"$PATH"
# Generate classes.py from inventory schema
# This file is in .gitignore
${self'.packages.classgen}/bin/classgen ${self'.legacyPackages.schemas.inventory-schema-abstract}/schema.json $PKG_ROOT/clan_lib/nix_models/inventory.py
# Generate classes.py from schemas
${self'.packages.classgen}/bin/classgen ${self'.legacyPackages.schemas.clan-schema-abstract}/schema.json $PKG_ROOT/clan_lib/nix_models/clan.py
'';
}