| # Top-level file aggregating all machines managed from hscloud. |
| # |
| # This allows to have a common attrset of machines that can be deployed |
| # in the same way. |
| # |
| # Currently building/deployment is still done in a half-assed way: |
| # |
| # machine=edge01.waw.bgp.wtf |
| # d=$(nix-build -A 'ops.machines."'$machine'"'.toplevel) |
| # |
| # To then deploy derivation $d on $machine: |
| # |
| # nix-copy-closure --to root@$machine $d |
| # ssh root@$machine $d/bin/switch-to-configuration dry-activate |
| # ssh root@$machine $d/bin/switch-to-configuration test |
| # ssh root@$machine nix-env -p /nix/var/nix/profiles/system --set $d |
| # ssh root@$machine $d/bin/switch-to-configuration boot |
| # |
| # TODO(q3k): merge this with //cluster/clustercfg - this should be unified! |
| |
| { hscloud, pkgs, ... }: |
| |
| let |
| # Stopgap measure to import //cluster/nix machine definitions into new |
| # //ops/machines infrastructure. |
| # TODO(q3k): inject defs-cluster-k0.nix / defs-machines.nix content via |
| # nixos options instead of having module definitions loading it themselves, |
| # deduplicate list of machines below with defs-machines.nix somehow. |
| mkClusterMachine = name: pkgs.nixos ({ config, pkgs, ... }: { |
| # The hostname is used by //cluster/nix machinery to load the appropriate |
| # config from defs-machines into defs-cluster-k0. |
| networking.hostName = name; |
| imports = [ |
| ../cluster/nix/modules/base.nix |
| ../cluster/nix/modules/kubernetes.nix |
| ]; |
| }); |
| |
| mkMachine = pkgs: paths: pkgs.nixos ({ config, pkgs, ... }: { |
| imports = paths; |
| }); |
| |
| in { |
| "bc01n01.hswaw.net" = mkClusterMachine "bc01n01"; |
| "bc01n02.hswaw.net" = mkClusterMachine "bc01n02"; |
| "bc01n03.hswaw.net" = mkClusterMachine "bc01n03"; |
| "dcr01s22.hswaw.net" = mkClusterMachine "dcr01s22"; |
| "dcr01s24.hswaw.net" = mkClusterMachine "dcr01s24"; |
| |
| # edge01 still lives on an old nixpkgs checkout. |
| # TODO(b/3): unpin and deploy. |
| "edge01.waw.bgp.wtf" = mkMachine ( |
| import (pkgs.fetchFromGitHub { |
| owner = "nixos"; |
| repo = "nixpkgs-channels"; |
| rev = "c59ea8b8a0e7f927e7291c14ea6cd1bd3a16ff38"; |
| sha256 = "1ak7jqx94fjhc68xh1lh35kh3w3ndbadprrb762qgvcfb8351x8v"; |
| }) {} |
| ) [ |
| ../bgpwtf/machines/edge01.waw.bgp.wtf.nix |
| ../bgpwtf/machines/edge01.waw.bgp.wtf-hardware.nix |
| ]; |
| } |