{ description = "NixOS kubeadm cluster configs"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; }; outputs = { nixpkgs, ... }: let system = "x86_64-linux"; lib = nixpkgs.lib; mkNode = { name, role }: let roleModule = if role == "control-plane" then ./modules/k8s-control-plane.nix else ./modules/k8s-worker.nix; hardwarePath = ./hosts/hardware + "/${name}.nix"; in nixpkgs.lib.nixosSystem { inherit system; modules = [ ./modules/k8s-cluster-settings.nix ./modules/k8s-common.nix roleModule ({ lib, ... }: { imports = lib.optional (builtins.pathExists hardwarePath) hardwarePath; networking.hostName = name; system.stateVersion = "25.05"; }) ]; }; in { nixosConfigurations = lib.genAttrs [ "cp-1" "cp-2" "cp-3" "wk-1" "wk-2" "wk-3" ] (name: mkNode { inherit name; role = if lib.hasPrefix "cp-" name then "control-plane" else "worker"; }); }; }