From ca79433aa9e75999a37f52989046e3f12e9db45c Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Sun, 15 Sep 2024 18:42:19 +0200 Subject: [PATCH] CLI: use abstract schema to avoid module imports --- lib/inventory/flake-module.nix | 13 +++++++++++++ pkgs/clan-cli/default.nix | 4 ++-- pkgs/clan-cli/flake-module.nix | 4 ++-- pkgs/clan-cli/shell.nix | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/inventory/flake-module.nix b/lib/inventory/flake-module.nix index c4962c99e..3a5b8bc73 100644 --- a/lib/inventory/flake-module.nix +++ b/lib/inventory/flake-module.nix @@ -84,6 +84,19 @@ in cp schema.json $out ''; }; + packages.inventory-schema-abstract = pkgs.stdenv.mkDerivation { + name = "inventory-schema"; + buildInputs = [ pkgs.cue ]; + src = ./.; + buildPhase = '' + export SCHEMA=${builtins.toFile "inventory-schema.json" (builtins.toJSON bareSchema.abstractSchema)} + cp $SCHEMA schema.json + cue import -f -p compose -l '#Root:' schema.json + mkdir $out + cp schema.cue $out + cp schema.json $out + ''; + }; packages.inventory-schema-pretty = pkgs.stdenv.mkDerivation { name = "inventory-schema-pretty"; buildInputs = [ pkgs.cue ]; diff --git a/pkgs/clan-cli/default.nix b/pkgs/clan-cli/default.nix index 333c5da85..2d8551e26 100644 --- a/pkgs/clan-cli/default.nix +++ b/pkgs/clan-cli/default.nix @@ -22,7 +22,7 @@ nixpkgs, includedRuntimeDeps, - inventory-schema, + inventory-schema-abstract, classgen, }: let @@ -63,7 +63,7 @@ let ln -sf ${nixpkgs'} $out/clan_cli/nixpkgs cp -r ${../../templates} $out/clan_cli/templates - ${classgen}/bin/classgen ${inventory-schema}/schema.json $out/clan_cli/inventory/classes.py --stop-at "Service" + ${classgen}/bin/classgen ${inventory-schema-abstract}/schema.json $out/clan_cli/inventory/classes.py --stop-at "Service" ''; # Create a custom nixpkgs for use within the project diff --git a/pkgs/clan-cli/flake-module.nix b/pkgs/clan-cli/flake-module.nix index 28fcab023..3f8399cd6 100644 --- a/pkgs/clan-cli/flake-module.nix +++ b/pkgs/clan-cli/flake-module.nix @@ -49,7 +49,7 @@ packages = { clan-cli = pkgs.python3.pkgs.callPackage ./default.nix { inherit (inputs) nixpkgs; - inherit (self'.packages) inventory-schema classgen; + inherit (self'.packages) inventory-schema-abstract classgen; clan-core-path = clanCoreWithVendoredDeps; includedRuntimeDeps = [ "age" @@ -58,7 +58,7 @@ }; clan-cli-full = pkgs.python3.pkgs.callPackage ./default.nix { inherit (inputs) nixpkgs; - inherit (self'.packages) inventory-schema classgen; + inherit (self'.packages) inventory-schema-abstract classgen; clan-core-path = clanCoreWithVendoredDeps; includedRuntimeDeps = lib.importJSON ./clan_cli/nix/allowed-programs.json; }; diff --git a/pkgs/clan-cli/shell.nix b/pkgs/clan-cli/shell.nix index 0d4d656e4..37daa68c6 100644 --- a/pkgs/clan-cli/shell.nix +++ b/pkgs/clan-cli/shell.nix @@ -45,6 +45,6 @@ mkShell { # Generate classes.py from inventory schema # This file is in .gitignore - ${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema}/schema.json $PKG_ROOT/clan_cli/inventory/classes.py --stop-at "Service" + ${self'.packages.classgen}/bin/classgen ${self'.packages.inventory-schema-abstract}/schema.json $PKG_ROOT/clan_cli/inventory/classes.py --stop-at "Service" ''; }