blob: dbe697b1b31b903be83854b942ddf20e8b71946b [file] [log] [blame]
self: super:
let
machines = (import ./defs-machines.nix);
configurations = builtins.listToAttrs (map (machine: {
name = machine.fqdn;
value = super.nixos ({ config, pkgs, ... }: {
networking.hostName = machine.name;
imports = [
./module-base.nix
./module-kubernetes.nix
];
});
}) machines);
scriptForMachine = machine: let
configuration = configurations."${machine.fqdn}";
in ''
set -e
remote=root@${machine.fqdn}
echo "Configuration for ${machine.fqdn} is ${configuration.toplevel}"
nix copy --no-check-sigs -s --to ssh://$remote ${configuration.toplevel}
ssh $remote ${configuration.toplevel}/bin/switch-to-configuration $1
'';
machineProvisioners = builtins.listToAttrs (map (machine: {
name = "provision-${machine.name}";
value = super.writeScriptBin "provision-${machine.name}" (scriptForMachine machine);
}) machines);
in
{
provision = ({
provision = super.writeScriptBin "provision"
(
''
echo "Available provisioniers:"
'' + (builtins.concatStringsSep "\n" (map (machine: "echo ' provision-${machine.name}'") machines))
);
}) // machineProvisioners;
}