diff --git a/hive.nix b/hive.nix index 7283d36..01cb4fd 100644 --- a/hive.nix +++ b/hive.nix @@ -14,6 +14,7 @@ in defaults = { pkgs, ... }: { imports = [ ./profiles/sysadmin.nix + ./profiles/glucagon.nix "${src.agenix}/modules/age.nix" (disko.config diskConfig) ]; @@ -35,27 +36,13 @@ in estragon = { name, nodes, ... }: { deployment.tags = [ "matrix" ]; deployment.targetHost = "estragon.federez.net"; - systemd.network.links."10-wan" = { - matchConfig.MACAddress = "BC:24:11:5C:A4:5A"; - linkConfig.Name = "wan"; - }; - systemd.network.networks."10-wan" = { - matchConfig.Name = "wan"; - address = [ - "172.17.8.227/22" - ]; - routes = [ - { - routeConfig = { - Gateway = "172.17.11.254"; - }; - } - ]; - linkConfig.RequiredForOnline = "routable"; - }; - networking.hostName = name; + glucagon.networking = { + nibble = 227; + wan-mac = "BC:24:11:5C:A4:5A"; + }; + imports = [ ./profiles/vm.nix ./profiles/matrix-server.nix @@ -70,23 +57,9 @@ in deployment.targetHost = "wagon.federez.net"; networking.hostName = name; - systemd.network.links."10-wan" = { - matchConfig.MACAddress = "BC:24:11:EA:6C:0B"; - linkConfig.Name = "wan"; - }; - systemd.network.networks."10-wan" = { - matchConfig.Name = "wan"; - address = [ - "172.17.8.228/22" - ]; - routes = [ - { - routeConfig = { - Gateway = "172.17.11.254"; - }; - } - ]; - linkConfig.RequiredForOnline = "routable"; + glucagon.networking = { + nibble = 228; + wan-mac = "BC:24:11:EA:6C:0B"; }; imports = [ @@ -100,23 +73,9 @@ in deployment.targetHost = "lagon.federez.net"; networking.hostName = name; - systemd.network.links."10-wan" = { - matchConfig.MACAddress = "BC:24:11:7F:19:60"; - linkConfig.Name = "wan"; - }; - systemd.network.networks."10-wan" = { - matchConfig.Name = "wan"; - address = [ - "172.17.8.229/22" - ]; - routes = [ - { - routeConfig = { - Gateway = "172.17.11.254"; - }; - } - ]; - linkConfig.RequiredForOnline = "routable"; + glucagon.networking = { + nibble = 229; + wan-mac = "BC:24:11:7F:19:60"; }; imports = [ diff --git a/profiles/glucagon.nix b/profiles/glucagon.nix new file mode 100644 index 0000000..a4201a7 --- /dev/null +++ b/profiles/glucagon.nix @@ -0,0 +1,49 @@ +{ config, lib, ... }: +let + inherit (lib) mkOption types; + cfg = config.glucagon; +in + { + options.glucagon = { + networking = { + nibble = mkOption { + type = types.int; + description = ''' + Derniers 8 bits de l'IPv4 de la machine. + Cela configurera automatiquement l'IPv4 interne de NAT. + ''; + example = 230; + }; + + wan-mac = mkOption { + type = types.str; + description = ''' + Adresse MAC de l'interface réseau WAN + qui portera l'IPv4 interne. + ''; + example = "BC:24:11:B7:AE:80"; + }; + }; + }; + + config = { + systemd.network.links."10-wan" = { + matchConfig.MACAddress = cfg.networking.wan-mac; + linkConfig.Name = "wan"; + }; + systemd.network.networks."10-wan" = { + matchConfig.Name = "wan"; + address = [ + "172.17.8.${toString cfg.networking.nibble}/22" + ]; + routes = [ + { + routeConfig = { + Gateway = "172.17.11.254"; + }; + } + ]; + linkConfig.RequiredForOnline = "routable"; + }; + }; + }