diff --git a/modules/devices/cross/default.nix b/devices/cross/default.nix similarity index 100% rename from modules/devices/cross/default.nix rename to devices/cross/default.nix diff --git a/modules/devices/cross/luks-manual/default.nix b/devices/cross/luks-manual/default.nix similarity index 100% rename from modules/devices/cross/luks-manual/default.nix rename to devices/cross/luks-manual/default.nix diff --git a/modules/devices/cross/luks-manual/nas.key b/devices/cross/luks-manual/nas.key similarity index 100% rename from modules/devices/cross/luks-manual/nas.key rename to devices/cross/luks-manual/nas.key diff --git a/modules/devices/cross/luks-manual/vps6.key b/devices/cross/luks-manual/vps6.key similarity index 100% rename from modules/devices/cross/luks-manual/vps6.key rename to devices/cross/luks-manual/vps6.key diff --git a/modules/devices/cross/luks-manual/vps7.key b/devices/cross/luks-manual/vps7.key similarity index 100% rename from modules/devices/cross/luks-manual/vps7.key rename to devices/cross/luks-manual/vps7.key diff --git a/modules/devices/cross/wireguard.nix b/devices/cross/wireguard.nix similarity index 100% rename from modules/devices/cross/wireguard.nix rename to devices/cross/wireguard.nix diff --git a/modules/devices/nas.nix b/devices/nas/default.nix similarity index 94% rename from modules/devices/nas.nix rename to devices/nas/default.nix index f73f472b..1658dc00 100644 --- a/modules/devices/nas.nix +++ b/devices/nas/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "nas") + config = { nixos = { diff --git a/modules/devices/one.nix b/devices/one/default.nix similarity index 92% rename from modules/devices/one.nix rename to devices/one/default.nix index 66a6e0f1..83567ea8 100644 --- a/modules/devices/one.nix +++ b/devices/one/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "one") + config = { nixos = { diff --git a/modules/devices/pc/bios/Bootx64.efi b/devices/pc/bios/Bootx64.efi similarity index 100% rename from modules/devices/pc/bios/Bootx64.efi rename to devices/pc/bios/Bootx64.efi diff --git a/modules/devices/pc/bios/DisplayEngine.efi b/devices/pc/bios/DisplayEngine.efi similarity index 100% rename from modules/devices/pc/bios/DisplayEngine.efi rename to devices/pc/bios/DisplayEngine.efi diff --git a/modules/devices/pc/bios/SetupBrowser.efi b/devices/pc/bios/SetupBrowser.efi similarity index 100% rename from modules/devices/pc/bios/SetupBrowser.efi rename to devices/pc/bios/SetupBrowser.efi diff --git a/modules/devices/pc/bios/UiApp.efi b/devices/pc/bios/UiApp.efi similarity index 100% rename from modules/devices/pc/bios/UiApp.efi rename to devices/pc/bios/UiApp.efi diff --git a/modules/devices/pc/default.nix b/devices/pc/default.nix similarity index 98% rename from modules/devices/pc/default.nix rename to devices/pc/default.nix index bc2256a7..858bdeb7 100644 --- a/modules/devices/pc/default.nix +++ b/devices/pc/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "pc") + config = { nixos = { diff --git a/modules/devices/srv1/default.nix b/devices/srv1/default.nix similarity index 93% rename from modules/devices/srv1/default.nix rename to devices/srv1/default.nix index 2aae312f..79c75a1d 100644 --- a/modules/devices/srv1/default.nix +++ b/devices/srv1/default.nix @@ -1,7 +1,6 @@ inputs: { - imports = inputs.localLib.findModules ./.; - config = inputs.lib.mkIf (inputs.config.nixos.model.cluster.clusterName or null == "srv1") + config = { nixos = { diff --git a/modules/devices/srv1/node0.nix b/devices/srv1/node0/default.nix similarity index 93% rename from modules/devices/srv1/node0.nix rename to devices/srv1/node0/default.nix index dbf649a0..921054c0 100644 --- a/modules/devices/srv1/node0.nix +++ b/devices/srv1/node0/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "srv1-node0") + config = { nixos = { diff --git a/modules/devices/srv1/node1.nix b/devices/srv1/node1/default.nix similarity index 89% rename from modules/devices/srv1/node1.nix rename to devices/srv1/node1/default.nix index 5c94804f..269d890d 100644 --- a/modules/devices/srv1/node1.nix +++ b/devices/srv1/node1/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "srv1-node1") + config = { nixos = { diff --git a/modules/devices/srv1/node2.nix b/devices/srv1/node2/default.nix similarity index 93% rename from modules/devices/srv1/node2.nix rename to devices/srv1/node2/default.nix index 069f99ef..82ea2f9e 100644 --- a/modules/devices/srv1/node2.nix +++ b/devices/srv1/node2/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "srv1-node2") + config = { nixos = { diff --git a/modules/devices/srv2/default.nix b/devices/srv2/default.nix similarity index 98% rename from modules/devices/srv2/default.nix rename to devices/srv2/default.nix index 139ce34c..9374c06d 100644 --- a/modules/devices/srv2/default.nix +++ b/devices/srv2/default.nix @@ -1,6 +1,5 @@ inputs: { - imports = inputs.localLib.findModules ./.; config = { nixos = diff --git a/modules/devices/srv2/node0.nix b/devices/srv2/node0/default.nix similarity index 92% rename from modules/devices/srv2/node0.nix rename to devices/srv2/node0/default.nix index ee00beb1..100ac78c 100644 --- a/modules/devices/srv2/node0.nix +++ b/devices/srv2/node0/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "srv2-node0") + config = { nixos = { diff --git a/modules/devices/srv2/node1.nix b/devices/srv2/node1/default.nix similarity index 90% rename from modules/devices/srv2/node1.nix rename to devices/srv2/node1/default.nix index 1a149ace..72e64cf3 100644 --- a/modules/devices/srv2/node1.nix +++ b/devices/srv2/node1/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "srv2-node1") + config = { nixos = { diff --git a/modules/devices/vps6.nix b/devices/vps6/default.nix similarity index 97% rename from modules/devices/vps6.nix rename to devices/vps6/default.nix index 4946095b..dbc7a65f 100644 --- a/modules/devices/vps6.nix +++ b/devices/vps6/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "vps6") + config = { nixos = { diff --git a/modules/devices/vps7.nix b/devices/vps7/default.nix similarity index 96% rename from modules/devices/vps7.nix rename to devices/vps7/default.nix index f314287d..a93d4704 100644 --- a/modules/devices/vps7.nix +++ b/devices/vps7/default.nix @@ -1,6 +1,6 @@ inputs: { - config = inputs.lib.mkIf (inputs.config.nixos.model.hostname == "vps7") + config = { nixos = { diff --git a/flake/nixos.nix b/flake/nixos.nix index 36990569..c9acaab9 100644 --- a/flake/nixos.nix +++ b/flake/nixos.nix @@ -1,21 +1,43 @@ { inputs, localLib }: let - singles = [ "nas" "pc" "vps6" "vps7" "one" ]; + machine = [ "nas" "pc" "vps6" "vps7" "one" ]; cluster = { srv1 = 3; srv2 = 2; }; - devices = builtins.listToAttrs - ( - (builtins.map (n: { name = n; value.hostname = n; }) singles) - ++ (builtins.concatLists (builtins.map - (cluster: builtins.map - (node: { name = "${cluster.name}-${node}"; value.cluster = { clusterName = cluster.name; nodeName = node; }; }) - (builtins.genList (n: "node${builtins.toString n}") cluster.value)) - (localLib.attrsToList cluster))) - ); -in builtins.mapAttrs - (_: v: inputs.nixpkgs.lib.nixosSystem - { - system = "x86_64-linux"; - specialArgs = { topInputs = inputs; inherit localLib; }; - modules = localLib.mkModules [ { config.nixos.model = v; } ../modules ]; - }) - devices +in builtins.listToAttrs +( + (builtins.map + (system: + { + name = system; + value = inputs.nixpkgs.lib.nixosSystem + { + system = "x86_64-linux"; + specialArgs = { topInputs = inputs; inherit localLib; }; + modules = localLib.mkModules + [ { config.nixos.model.hostname = system; } ../modules ../devices/${system} ../devices/cross ]; + }; + }) + machine) + ++ (builtins.concatLists (builtins.map + (cluster: + let nodes = builtins.genList (n: "node${builtins.toString n}") cluster.value; + in builtins.map + (node: + { + name = "${cluster.name}-${node}"; + value = inputs.nixpkgs.lib.nixosSystem + { + system = "x86_64-linux"; + specialArgs = { topInputs = inputs; inherit localLib; }; + modules = localLib.mkModules + [ + { config.nixos.model.cluster = { clusterName = cluster.name; nodeName = node; }; } + ../modules + ../devices/${cluster.name} + ../devices/${cluster.name}/${node} + ../devices/cross + ]; + }; + }) + nodes) + (localLib.attrsToList cluster))) +) diff --git a/modules/devices/default.nix b/modules/devices/default.nix deleted file mode 100644 index 12a1abbe..00000000 --- a/modules/devices/default.nix +++ /dev/null @@ -1 +0,0 @@ -inputs: { imports = inputs.localLib.findModules ./.; }