Inventory: set {name,meta.name} automatically

This commit is contained in:
Johannes Kirschbauer
2024-09-15 15:09:54 +02:00
parent 27f3935abc
commit 8d5463587e
2 changed files with 74 additions and 53 deletions

View File

@@ -160,10 +160,10 @@ let
{
config.clan.${serviceName} = lib.mkMerge (
[
(globalConfig)
(lib.traceValSeq machineServiceConfig)
globalConfig
machineServiceConfig
]
++ (roleServiceConfigs)
++ roleServiceConfigs
);
}
)

View File

@@ -13,6 +13,20 @@ let
type = types.nullOr types.str;
};
};
metaOptionsWith = name: {
name = lib.mkOption {
type = types.str;
default = name;
};
description = lib.mkOption {
default = null;
type = types.nullOr types.str;
};
icon = lib.mkOption {
default = null;
type = types.nullOr types.str;
};
};
moduleConfig = lib.mkOption {
default = { };
@@ -64,9 +78,12 @@ in
machines = lib.mkOption {
default = { };
type = types.attrsOf (
types.submodule {
types.submodule (
{ name, ... }:
{
options = {
inherit (metaOptions) name description icon;
inherit (metaOptionsWith name) name description icon;
tags = lib.mkOption {
default = [ ];
@@ -84,6 +101,7 @@ in
};
};
}
)
);
};
@@ -91,8 +109,10 @@ in
default = { };
type = types.attrsOf (
types.attrsOf (
types.submodule {
options.meta = metaOptions;
types.submodule (
{ name, ... }:
{
options.meta = metaOptionsWith name;
options.imports = importsOption;
options.config = moduleConfig;
options.machines = lib.mkOption {
@@ -124,6 +144,7 @@ in
};
}
)
)
);
};
};