# Pin the deployment package-set to a specific version of nixpkgs # with import ../nixos-21.05.nix {}; with import {}; let etcdNodes = { k0-0 = "10.1.8.50"; k0-1 = "10.1.8.51"; k0-2 = "10.1.8.52"; }; master = { features.k8s = { host.name = "k0-0"; host.address = "10.1.8.50"; master.enable = true; nodes = nodes; etcdCluster = { enable = true; existing = true; nodes = etcdNodes; }; }; services.kubernetes.kubelet.unschedulable = true; imports = [ ./cluster.nix ./hw/k0-0.nix ]; }; nodes = [ { name = "k0-1"; address = "10.1.8.51"; } { name = "k0-2"; address = "10.1.8.52"; } ]; mkNode = x: { "${x.name}" = lib.mkMerge [ { features.k8s.host = x; } (if builtins.hasAttr x.name etcdNodes then { features.k8s.etcdCluster = { enable = true; existing = true; nodes = etcdNodes; }; } else {}) ] // { imports = [ ./cluster.nix (./hw + "/${x.name}.nix") ]; }; }; in builtins.foldl' (a: x: a // mkNode x) { "${master.features.k8s.host.name}" = master; } nodes