chore(buildClan): move machineClass option into inventory.machines submodule

This commit is contained in:
Johannes Kirschbauer
2025-04-09 11:03:23 +02:00
committed by Mic92
parent afbae04aa6
commit c49dd6c462
4 changed files with 35 additions and 30 deletions

View File

@@ -5,6 +5,9 @@
"description": "A nice thing", "description": "A nice thing",
"icon": "./path/to/icon.png", "icon": "./path/to/icon.png",
"tags": ["1", "2", "3"] "tags": ["1", "2", "3"]
},
"test-darwin-machine": {
"machineClass": "darwin"
} }
}, },
"services": { "services": {

View File

@@ -164,16 +164,18 @@ let
}; };
}; };
allMachines = inventory.machines or { } // machines; allMachines = inventoryClass.machines;
machineClass = lib.mapAttrs (name: _: inventory.machineClass.${name} or "nixos") allMachines; machineClasses = lib.mapAttrs (
name: _: inventory.machines.${name}.machineClass or "nixos"
configurations = lib.mapAttrs (
name: _: moduleSystemConstructor.${machineClass.${name}} { inherit name; }
) allMachines; ) allMachines;
nixosConfigurations = lib.filterAttrs (name: _: machineClass.${name} == "nixos") configurations; configurations = lib.mapAttrs (
darwinConfigurations = lib.filterAttrs (name: _: machineClass.${name} == "darwin") configurations; name: _: moduleSystemConstructor.${machineClasses.${name}} { inherit name; }
) allMachines;
nixosConfigurations = lib.filterAttrs (name: _: machineClasses.${name} == "nixos") configurations;
darwinConfigurations = lib.filterAttrs (name: _: machineClasses.${name} == "darwin") configurations;
# This instantiates NixOS for each system that we support: # This instantiates NixOS for each system that we support:
# configPerSystem = <system>.<machine>.nixosConfiguration # configPerSystem = <system>.<machine>.nixosConfiguration
@@ -184,7 +186,7 @@ let
lib.nameValuePair system ( lib.nameValuePair system (
lib.mapAttrs ( lib.mapAttrs (
name: _: name: _:
moduleSystemConstructor.${machineClass.${name}} { moduleSystemConstructor.${machineClasses.${name}} {
inherit name system; inherit name system;
pkgs = pkgsFor.${system}; pkgs = pkgsFor.${system};
} }
@@ -199,7 +201,7 @@ let
lib.nameValuePair system ( lib.nameValuePair system (
lib.mapAttrs ( lib.mapAttrs (
name: _: args: name: _: args:
moduleSystemConstructor.${machineClass.${name}} ( moduleSystemConstructor.${machineClasses.${name}} (
args args
// { // {
inherit name system; inherit name system;

View File

@@ -210,14 +210,16 @@ in
meta.name = "test"; meta.name = "test";
machines.machine1 = { }; machines.machine1 = { };
machines.machine2 = { }; inventory.machines.machine2 = {
machines.machine3 = { }; machineClass = "darwin";
};
inventory.machineClass.machine2 = "darwin"; inventory.machines.machine3 = {
inventory.machineClass.machine3 = "nixos"; machineClass = "nixos";
};
}; };
in in
{ {
inherit result;
expr = { expr = {
nixos = builtins.attrNames result.nixosConfigurations; nixos = builtins.attrNames result.nixosConfigurations;
darwin = builtins.attrNames result.darwinConfigurations; darwin = builtins.attrNames result.darwinConfigurations;
@@ -241,7 +243,6 @@ in
meta.name = "test"; meta.name = "test";
machines.machine1.non_existent_option = throw "eval error"; machines.machine1.non_existent_option = throw "eval error";
inventory.machines.machine1.other_non_existent_option = throw "different eval error";
}; };
in in
{ {

View File

@@ -243,6 +243,19 @@ in
options = { options = {
inherit (metaOptionsWith name) name description icon; inherit (metaOptionsWith name) name description icon;
machineClass = lib.mkOption {
default = "nixos";
type = types.enum [
"nixos"
"darwin"
];
description = ''
The module system that should be used to construct the machine
Set this to `darwin` for macOS machines
'';
};
tags = lib.mkOption { tags = lib.mkOption {
description = '' description = ''
List of tags for the machine. List of tags for the machine.
@@ -278,21 +291,6 @@ in
); );
}; };
machineClass = lib.mkOption {
default = { };
type = types.attrsOf (
types.enum [
"nixos"
"darwin"
]
);
description = ''
The module system that should be used to construct the machine
Set this to `darwin` for macOS machines
'';
};
instances = lib.mkOption { instances = lib.mkOption {
# Keep as internal until all de-/serialization issues are resolved # Keep as internal until all de-/serialization issues are resolved
visible = false; visible = false;
@@ -366,6 +364,7 @@ in
else else
lib.warn "Inventory.instances and related features are still under development. Please use with care." v; lib.warn "Inventory.instances and related features are still under development. Please use with care." v;
}; };
services = lib.mkOption { services = lib.mkOption {
description = '' description = ''
Services of the inventory. Services of the inventory.