feat(buildClan): expose {nixosModules,darwinModules} from clanInternals
These are the exact same modules that where used internally to construct the corresponding 'nixosConfiguration', 'darwinConfiguration' They can be externally used, and would yield the same result Given that you pass the same 'specialArgs'
This commit is contained in:
@@ -62,6 +62,8 @@ let
|
|||||||
configurations = lib.mapAttrs (
|
configurations = lib.mapAttrs (
|
||||||
name: _:
|
name: _:
|
||||||
moduleSystemConstructor.${machineClasses.${name}} {
|
moduleSystemConstructor.${machineClasses.${name}} {
|
||||||
|
# ATTENTION!: Dont add any modules here.
|
||||||
|
# Add them to 'outputs.moduleForMachine.${name}' instead.
|
||||||
modules = [ (config.outputs.moduleForMachine.${name} or { }) ];
|
modules = [ (config.outputs.moduleForMachine.${name} or { }) ];
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit clan-core;
|
inherit clan-core;
|
||||||
@@ -113,10 +115,10 @@ in
|
|||||||
type = lib.types.attrsOf lib.types.deferredModule;
|
type = lib.types.attrsOf lib.types.deferredModule;
|
||||||
};
|
};
|
||||||
config.outputs.moduleForMachine = lib.mkMerge [
|
config.outputs.moduleForMachine = lib.mkMerge [
|
||||||
# Create one empty module for each machine such that there is a default for each machine
|
# Create some modules for each machine
|
||||||
# See: 'staticModules' in the moduleForMachine option
|
# These can depend on the 'name' and
|
||||||
# This is only necessary because clan.machines doesn't include all machines
|
# everything that can be derived from the machine 'name'
|
||||||
# There can other sources: i.e. inventory
|
# i.e. by looking up the corresponding information in the 'inventory' or 'clan' submodule
|
||||||
(lib.mapAttrs (
|
(lib.mapAttrs (
|
||||||
name: v:
|
name: v:
|
||||||
(
|
(
|
||||||
@@ -173,10 +175,24 @@ in
|
|||||||
./computed-tags.nix
|
./computed-tags.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Ready to use configurations
|
||||||
|
# These are only shallow wrapping the 'nixosModules' or 'darwinModules' with
|
||||||
|
# lib.nixosSystem
|
||||||
inherit nixosConfigurations;
|
inherit nixosConfigurations;
|
||||||
inherit darwinConfigurations;
|
inherit darwinConfigurations;
|
||||||
|
|
||||||
clanInternals = {
|
clanInternals = {
|
||||||
|
# Expose reusable modules these can be imported or wrapped or instantiated
|
||||||
|
# - by the user
|
||||||
|
# - by some test frameworks
|
||||||
|
# IMPORTANT!: It is utterly important that we don't add any logic outside of these modules, as it would get tested.
|
||||||
|
nixosModules = lib.filterAttrs (
|
||||||
|
name: _: inventory.machines.${name}.machineClass or "nixos" == "nixos"
|
||||||
|
) (config.outputs.moduleForMachine);
|
||||||
|
darwinModules = lib.filterAttrs (
|
||||||
|
name: _: inventory.machines.${name}.machineClass or "nixos" == "darwin"
|
||||||
|
) (config.outputs.moduleForMachine);
|
||||||
|
|
||||||
moduleSchemas = clan-core.clanLib.modules.getModulesSchema {
|
moduleSchemas = clan-core.clanLib.modules.getModulesSchema {
|
||||||
modules = config.inventory.modules;
|
modules = config.inventory.modules;
|
||||||
# TODO: make this function system agnostic
|
# TODO: make this function system agnostic
|
||||||
|
|||||||
Reference in New Issue
Block a user