clanServices: add flake level exports

This commit is contained in:
Johannes Kirschbauer
2025-07-01 16:54:19 +02:00
parent 29a2103aab
commit d10fe7a8ee
10 changed files with 373 additions and 32 deletions

View File

@@ -384,6 +384,10 @@ in
type = types.deferredModuleWith {
staticModules = [
({
options.exports = mkOption {
type = types.deferredModule;
default = { };
};
options.nixosModule = mkOption {
type = types.deferredModule;
default = { };
@@ -514,6 +518,10 @@ in
type = types.deferredModuleWith {
staticModules = [
({
options.exports = mkOption {
type = types.deferredModule;
default = { };
};
options.nixosModule = mkOption {
type = types.deferredModule;
default = { };
@@ -608,6 +616,34 @@ in
modules = [ v ];
}).config;
};
exports = mkOption {
default = { };
type = types.submoduleWith {
# Static modules
modules =
[
{
options.instances = mkOption {
type = types.attrsOf types.deferredModule;
};
}
{
options.machines = mkOption {
type = types.attrsOf types.deferredModule;
};
}
]
++ lib.mapAttrsToList (_roleName: role: {
instances = lib.mapAttrs (_instanceName: instance: {
imports = lib.mapAttrsToList (_machineName: v: v.exports) instance.allMachines;
}) role.allInstances;
}) config.result.allRoles
++ lib.mapAttrsToList (machineName: machine: {
machines.${machineName} = machine.exports;
}) config.result.allMachines;
};
};
# ---
# Place the result in _module.result to mark them as "internal" and discourage usage/overrides
#