let # Pin the deployment package-set to a specific version of nixpkgs # pkgs = import (builtins.fetchTarball { # url = "https://github.com/NixOS/nixpkgs/archive/e9148dc1c30e02aae80cc52f68ceb37b772066f3.tar.gz"; # sha256 = "1ckzhh24mgz6jd1xhfgx0i9mijk6xjqxwsshnvq789xsavrmsc36"; # }) {}; pkgs = import {}; master = { deployment.tags = [ "master" ]; node.name = "k2-0"; node.address = "10.1.8.60"; features.k8s.master.enable = true; features.k8s.nodes = nodes; imports = [ ./cluster.nix ./hw/k2-0.nix ]; }; nodes = [ { name = "k2-1"; address = "10.1.8.61"; } { name = "k2-2"; address = "10.1.8.62"; } { name = "k2-3"; address = "10.1.8.63"; } { name = "k2-4"; address = "10.1.8.64"; } ]; mkNode = x: { "${x.name}" = { config, pkgs, ... }: { deployment.tags = [ "node" ]; node = x; imports = [ ./cluster.nix (./hw + "/${x.name}.nix") ]; }; }; in { network = { inherit pkgs; description = "k2"; ordering = { tags = [ "master" "node" ]; }; }; } // builtins.foldl' (a: x: a // mkNode x) { "${master.node.name}" = master; } nodes