split machines into file for each machine
This commit is contained in:
parent
904098c877
commit
960d3f6075
9 changed files with 167 additions and 149 deletions
21
nixos/machines/atlas.nix
Normal file
21
nixos/machines/atlas.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
machines.atlas = {
|
||||||
|
kind = "physical";
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
isHypervisor = true;
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
storage = {
|
||||||
|
osDisk = "/dev/sda";
|
||||||
|
dataPartition = "/dev/nvme0n1p1";
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
useCertificates = true;
|
||||||
|
hostCert = builtins.readFile ./certificates/atlas/host_ed25519.crt;
|
||||||
|
userCert = builtins.readFile ./certificates/atlas/user_ed25519.crt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
15
nixos/machines/bancomart.nix
Normal file
15
nixos/machines/bancomart.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
machines.bancomart = {
|
||||||
|
kind = "virtual";
|
||||||
|
hypervisorName = "jefke";
|
||||||
|
|
||||||
|
nixosModule = {
|
||||||
|
microvm.balloonMem = 7680;
|
||||||
|
|
||||||
|
lab = {
|
||||||
|
dockerSwarm.enable = true;
|
||||||
|
vm.id = 2;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -47,158 +47,20 @@ let
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
./warwick.nix
|
||||||
|
./atlas.nix
|
||||||
|
./jefke.nix
|
||||||
|
./lewis.nix
|
||||||
|
./hermes.nix
|
||||||
|
./maestro.nix
|
||||||
|
./bancomart.nix
|
||||||
|
./vpay.nix
|
||||||
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
machines = lib.mkOption {
|
machines = lib.mkOption {
|
||||||
type = with lib.types; attrsOf (submodule machineOpts);
|
type = with lib.types; attrsOf (submodule machineOpts);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
|
||||||
machines = {
|
|
||||||
warwick = {
|
|
||||||
kind = "physical";
|
|
||||||
arch = "aarch64-linux";
|
|
||||||
isRaspberryPi = true;
|
|
||||||
|
|
||||||
nixosModule.lab = {
|
|
||||||
storage = {
|
|
||||||
osDisk = "/dev/sda";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
atlas = {
|
|
||||||
kind = "physical";
|
|
||||||
arch = "x86_64-linux";
|
|
||||||
isHypervisor = true;
|
|
||||||
|
|
||||||
nixosModule.lab = {
|
|
||||||
storage = {
|
|
||||||
osDisk = "/dev/sda";
|
|
||||||
dataPartition = "/dev/nvme0n1p1";
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
useCertificates = true;
|
|
||||||
hostCert = builtins.readFile ./certificates/atlas/host_ed25519.crt;
|
|
||||||
userCert = builtins.readFile ./certificates/atlas/user_ed25519.crt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
jefke = {
|
|
||||||
kind = "physical";
|
|
||||||
arch = "x86_64-linux";
|
|
||||||
isHypervisor = true;
|
|
||||||
|
|
||||||
nixosModule.lab = {
|
|
||||||
storage = {
|
|
||||||
osDisk = "/dev/sda";
|
|
||||||
dataPartition = "/dev/nvme0n1p1";
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
useCertificates = true;
|
|
||||||
hostCert = builtins.readFile ./certificates/jefke/host_ed25519.crt;
|
|
||||||
userCert = builtins.readFile ./certificates/jefke/user_ed25519.crt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
lewis = {
|
|
||||||
kind = "physical";
|
|
||||||
arch = "x86_64-linux";
|
|
||||||
isHypervisor = true;
|
|
||||||
|
|
||||||
nixosModule.lab = {
|
|
||||||
backups.enable = true;
|
|
||||||
data-sharing.enable = true;
|
|
||||||
networking.dmz.allowConnectivity = true;
|
|
||||||
|
|
||||||
storage = {
|
|
||||||
osDisk = "/dev/sda";
|
|
||||||
dataPartition = "/dev/nvme0n1p1";
|
|
||||||
};
|
|
||||||
|
|
||||||
ssh = {
|
|
||||||
useCertificates = true;
|
|
||||||
hostCert = builtins.readFile ./certificates/lewis/host_ed25519.crt;
|
|
||||||
userCert = builtins.readFile ./certificates/lewis/user_ed25519.crt;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hermes = {
|
|
||||||
kind = "virtual";
|
|
||||||
hypervisorName = "lewis";
|
|
||||||
|
|
||||||
nixosModule = { hypervisorConfig, ... }: {
|
|
||||||
lab = {
|
|
||||||
networking = {
|
|
||||||
dmz.services.enable = true;
|
|
||||||
staticNetworking = true;
|
|
||||||
staticIPv4 = hypervisorConfig.lab.networking.dmz.ipv4.services;
|
|
||||||
staticIPv6 = hypervisorConfig.lab.networking.dmz.ipv6.services;
|
|
||||||
};
|
|
||||||
|
|
||||||
vm = {
|
|
||||||
# TODO: would be cool to create a check that a mac address is only ever assigned to one VM.
|
|
||||||
# TODO: idea: what if we generated these IDs by hashing the host name and reducing that to the amount of hosts possible?
|
|
||||||
id = 7;
|
|
||||||
|
|
||||||
shares = [{
|
|
||||||
name = "dnsmasq";
|
|
||||||
mountPoint = "/var/lib/dnsmasq";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
maestro = {
|
|
||||||
kind = "virtual";
|
|
||||||
hypervisorName = "atlas";
|
|
||||||
|
|
||||||
nixosModule = { config, ... }: {
|
|
||||||
microvm.balloonMem = 7680;
|
|
||||||
|
|
||||||
lab = {
|
|
||||||
dockerSwarm.enable = true;
|
|
||||||
|
|
||||||
vm = {
|
|
||||||
id = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
bancomart = {
|
|
||||||
kind = "virtual";
|
|
||||||
hypervisorName = "jefke";
|
|
||||||
|
|
||||||
nixosModule = {
|
|
||||||
microvm.balloonMem = 7680;
|
|
||||||
|
|
||||||
lab = {
|
|
||||||
dockerSwarm.enable = true;
|
|
||||||
vm.id = 2;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
vpay = {
|
|
||||||
kind = "virtual";
|
|
||||||
hypervisorName = "lewis";
|
|
||||||
|
|
||||||
nixosModule = {
|
|
||||||
microvm.balloonMem = 5120;
|
|
||||||
|
|
||||||
lab = {
|
|
||||||
dockerSwarm.enable = true;
|
|
||||||
vm.id = 3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
29
nixos/machines/hermes.nix
Normal file
29
nixos/machines/hermes.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
machines.hermes = {
|
||||||
|
kind = "virtual";
|
||||||
|
hypervisorName = "lewis";
|
||||||
|
|
||||||
|
nixosModule = { hypervisorConfig, ... }: {
|
||||||
|
lab = {
|
||||||
|
networking = {
|
||||||
|
dmz.services.enable = true;
|
||||||
|
staticNetworking = true;
|
||||||
|
staticIPv4 = hypervisorConfig.lab.networking.dmz.ipv4.services;
|
||||||
|
staticIPv6 = hypervisorConfig.lab.networking.dmz.ipv6.services;
|
||||||
|
};
|
||||||
|
|
||||||
|
vm = {
|
||||||
|
# TODO: would be cool to create a check that a mac address is only ever assigned to one VM.
|
||||||
|
# TODO: idea: what if we generated these IDs by hashing the host name and reducing that to the amount of hosts possible?
|
||||||
|
id = 7;
|
||||||
|
|
||||||
|
shares = [{
|
||||||
|
name = "dnsmasq";
|
||||||
|
mountPoint = "/var/lib/dnsmasq";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
20
nixos/machines/jefke.nix
Normal file
20
nixos/machines/jefke.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
machines.jefke = {
|
||||||
|
kind = "physical";
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
isHypervisor = true;
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
storage = {
|
||||||
|
osDisk = "/dev/sda";
|
||||||
|
dataPartition = "/dev/nvme0n1p1";
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
useCertificates = true;
|
||||||
|
hostCert = builtins.readFile ./certificates/jefke/host_ed25519.crt;
|
||||||
|
userCert = builtins.readFile ./certificates/jefke/user_ed25519.crt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
24
nixos/machines/lewis.nix
Normal file
24
nixos/machines/lewis.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
machines.lewis = {
|
||||||
|
kind = "physical";
|
||||||
|
arch = "x86_64-linux";
|
||||||
|
isHypervisor = true;
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
backups.enable = true;
|
||||||
|
data-sharing.enable = true;
|
||||||
|
networking.dmz.allowConnectivity = true;
|
||||||
|
|
||||||
|
storage = {
|
||||||
|
osDisk = "/dev/sda";
|
||||||
|
dataPartition = "/dev/nvme0n1p1";
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh = {
|
||||||
|
useCertificates = true;
|
||||||
|
hostCert = builtins.readFile ./certificates/lewis/host_ed25519.crt;
|
||||||
|
userCert = builtins.readFile ./certificates/lewis/user_ed25519.crt;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
18
nixos/machines/maestro.nix
Normal file
18
nixos/machines/maestro.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
machines.maestro = {
|
||||||
|
kind = "virtual";
|
||||||
|
hypervisorName = "atlas";
|
||||||
|
|
||||||
|
nixosModule = { config, ... }: {
|
||||||
|
microvm.balloonMem = 7680;
|
||||||
|
|
||||||
|
lab = {
|
||||||
|
dockerSwarm.enable = true;
|
||||||
|
|
||||||
|
vm = {
|
||||||
|
id = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
15
nixos/machines/vpay.nix
Normal file
15
nixos/machines/vpay.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
machines.vpay = {
|
||||||
|
kind = "virtual";
|
||||||
|
hypervisorName = "lewis";
|
||||||
|
|
||||||
|
nixosModule = {
|
||||||
|
microvm.balloonMem = 5120;
|
||||||
|
|
||||||
|
lab = {
|
||||||
|
dockerSwarm.enable = true;
|
||||||
|
vm.id = 3;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
14
nixos/machines/warwick.nix
Normal file
14
nixos/machines/warwick.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
machines.warwick = {
|
||||||
|
kind = "physical";
|
||||||
|
arch = "aarch64-linux";
|
||||||
|
isRaspberryPi = true;
|
||||||
|
|
||||||
|
nixosModule.lab = {
|
||||||
|
# TODO: can we do this differently?
|
||||||
|
storage = {
|
||||||
|
osDisk = "/dev/sda";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue