let
  hosts = [ "demete" "hades" "hera" "hestia" "poseidon" "zeus" ];

  etcdClusterMembers = (builtins.map (h: h + "=http://" + h + ":2380") hosts);

  etcd = import ./services/etcd.nix // { services.etcd.initialCluster = (builtins.foldl' (x: y: x + "," + y) (builtins.head etcdClusterMembers) (builtins.tail etcdClusterMembers)); };

  kubernetesNode = 
    { config, pkgs, ... }:
    { networking.bridges.cbr0.interfaces = [];
      networking.interfaces.cbr0 =
        { ipAddress = "10.10.0.1";
          prefixLength = 24;
        };

      services.kubernetes.roles = [ "master" "node" ];
      virtualisation.docker.extraOptions = ''--iptables=false --ip-masq=false =b cbr0'';
    };

in

{ network.description = "Kubernetes Cluster";

  demeter  = etcd;
  hades    = etcd;
  hera     = etcd;
  hestia   = etcd;
  poseidon = etcd;
  zeus     = etcd;
}