chore(buildClan): move machineClass option into inventory.machines submodule
This commit is contained in:
committed by
Mic92
parent
afbae04aa6
commit
c49dd6c462
@@ -5,6 +5,9 @@
|
||||
"description": "A nice thing",
|
||||
"icon": "./path/to/icon.png",
|
||||
"tags": ["1", "2", "3"]
|
||||
},
|
||||
"test-darwin-machine": {
|
||||
"machineClass": "darwin"
|
||||
}
|
||||
},
|
||||
"services": {
|
||||
|
||||
@@ -164,16 +164,18 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
allMachines = inventory.machines or { } // machines;
|
||||
allMachines = inventoryClass.machines;
|
||||
|
||||
machineClass = lib.mapAttrs (name: _: inventory.machineClass.${name} or "nixos") allMachines;
|
||||
|
||||
configurations = lib.mapAttrs (
|
||||
name: _: moduleSystemConstructor.${machineClass.${name}} { inherit name; }
|
||||
machineClasses = lib.mapAttrs (
|
||||
name: _: inventory.machines.${name}.machineClass or "nixos"
|
||||
) allMachines;
|
||||
|
||||
nixosConfigurations = lib.filterAttrs (name: _: machineClass.${name} == "nixos") configurations;
|
||||
darwinConfigurations = lib.filterAttrs (name: _: machineClass.${name} == "darwin") configurations;
|
||||
configurations = lib.mapAttrs (
|
||||
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:
|
||||
# configPerSystem = <system>.<machine>.nixosConfiguration
|
||||
@@ -184,7 +186,7 @@ let
|
||||
lib.nameValuePair system (
|
||||
lib.mapAttrs (
|
||||
name: _:
|
||||
moduleSystemConstructor.${machineClass.${name}} {
|
||||
moduleSystemConstructor.${machineClasses.${name}} {
|
||||
inherit name system;
|
||||
pkgs = pkgsFor.${system};
|
||||
}
|
||||
@@ -199,7 +201,7 @@ let
|
||||
lib.nameValuePair system (
|
||||
lib.mapAttrs (
|
||||
name: _: args:
|
||||
moduleSystemConstructor.${machineClass.${name}} (
|
||||
moduleSystemConstructor.${machineClasses.${name}} (
|
||||
args
|
||||
// {
|
||||
inherit name system;
|
||||
|
||||
@@ -210,14 +210,16 @@ in
|
||||
meta.name = "test";
|
||||
|
||||
machines.machine1 = { };
|
||||
machines.machine2 = { };
|
||||
machines.machine3 = { };
|
||||
|
||||
inventory.machineClass.machine2 = "darwin";
|
||||
inventory.machineClass.machine3 = "nixos";
|
||||
inventory.machines.machine2 = {
|
||||
machineClass = "darwin";
|
||||
};
|
||||
inventory.machines.machine3 = {
|
||||
machineClass = "nixos";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
inherit result;
|
||||
expr = {
|
||||
nixos = builtins.attrNames result.nixosConfigurations;
|
||||
darwin = builtins.attrNames result.darwinConfigurations;
|
||||
@@ -241,7 +243,6 @@ in
|
||||
meta.name = "test";
|
||||
|
||||
machines.machine1.non_existent_option = throw "eval error";
|
||||
inventory.machines.machine1.other_non_existent_option = throw "different eval error";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
@@ -243,6 +243,19 @@ in
|
||||
options = {
|
||||
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 {
|
||||
description = ''
|
||||
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 {
|
||||
# Keep as internal until all de-/serialization issues are resolved
|
||||
visible = false;
|
||||
@@ -366,6 +364,7 @@ in
|
||||
else
|
||||
lib.warn "Inventory.instances and related features are still under development. Please use with care." v;
|
||||
};
|
||||
|
||||
services = lib.mkOption {
|
||||
description = ''
|
||||
Services of the inventory.
|
||||
|
||||
Reference in New Issue
Block a user