set hostName and domain in nixos config directly

This commit is contained in:
Pim Kunis 2024-01-28 12:55:58 +01:00
parent 371b851ca5
commit bd5dc4b883
5 changed files with 55 additions and 45 deletions

View file

@ -1,35 +1,44 @@
{
jefke = {
# TODO: directly set and read this from nixos config.
hostName = "jefke";
domain = "hyp";
# TODO: model this in a nixos module?
type = "physical";
nixosModule.lab = {
terraformDatabase.enable = true;
storage = {
osDisk = "/dev/sda";
dataPartition = "/dev/nvme0n1p1";
nixosModule = {
networking = {
hostName = "jefke";
# TODO: generate this using type?
domain = "hyp";
};
ssh = {
useCertificates = true;
# TODO: automatically set this?
hostCert = builtins.readFile ./jefke_host_ed25519-cert.pub;
userCert = builtins.readFile ./jefke_user_ed25519-cert.pub;
lab = {
terraformDatabase.enable = true;
storage = {
osDisk = "/dev/sda";
dataPartition = "/dev/nvme0n1p1";
};
ssh = {
useCertificates = true;
# TODO: automatically set this?
hostCert = builtins.readFile ./jefke_host_ed25519-cert.pub;
userCert = builtins.readFile ./jefke_user_ed25519-cert.pub;
};
};
};
};
atlas = {
hostName = "atlas";
domain = "hyp";
type = "physical";
nixosModule = { config, ... }:
let inherit (config.lab.networking) dmzServicesIPv4 dmzServicesIPv6; in
{
networking = {
hostName = "atlas";
domain = "hyp";
};
lab = {
networking = {
# TODO: Ideally, we don't have to set this here.
@ -53,11 +62,14 @@
};
lewis = {
hostName = "lewis";
domain = "hyp";
type = "physical";
nixosModule = { pkgs, ... }: {
networking = {
hostName = "lewis";
domain = "hyp";
};
lab = {
dataHost.enable = true;
@ -76,8 +88,6 @@
};
my-microvm = {
hostName = "my-microvm";
domain = "dmz";
type = "virtual";
hypervisorName = "lewis";
@ -86,6 +96,11 @@
echo "Hello world from inside a virtual machine!!" | ${pkgs.lolcat}/bin/lolcat
'';
networking = {
hostName = "my-microvm";
domain = "dmz";
};
lab.vmMacAddress = "BA:DB:EE:F0:00:00";
};
};

View file

@ -89,8 +89,6 @@ in {
config = {
networking = {
hostName = machine.hostName;
domain = machine.domain;
nftables.enable = true;
useDHCP = machine.type == "virtual";

View file

@ -58,23 +58,20 @@
microvm.vms =
let
vmsForHypervisor = lib.attrValues (lib.filterAttrs (n: v: v.type == "virtual" && v.hypervisorName == machine.hostName) machines);
vmsForHypervisor = lib.filterAttrs (n: v: v.type == "virtual" && v.hypervisorName == config.networking.hostName) machines;
in
lib.attrsets.mergeAttrsList (map
(vm:
builtins.mapAttrs
(name: vm:
{
"${vm.hostName}" = {
# TODO Simplify?
specialArgs = { inherit agenix disko pkgs lib microvm; machine = vm; hypervisorConfig = config; };
config = {
imports = [
./.
];
};
# TODO Simplify?
specialArgs = { inherit agenix disko pkgs lib microvm; machine = vm; hypervisorConfig = config; };
config = {
imports = [
./.
];
};
}
)
vmsForHypervisor
);
vmsForHypervisor;
};
}

View file

@ -1,4 +1,4 @@
{ lib, config, machine, hypervisorConfig, ... }: {
{ lib, config, hypervisorConfig, ... }: {
options.lab.vmMacAddress = lib.mkOption {
type = lib.types.str;
description = ''
@ -19,7 +19,7 @@
interfaces = [{
type = "tap";
id = "vm-${machine.hostName}";
id = "vm-${config.networking.hostName}";
mac = config.lab.vmMacAddress;
}];
};