77 lines
1.8 KiB
Nix
77 lines
1.8 KiB
Nix
{ lib, ... }:
|
|
|
|
let
|
|
toStringFixed = k: n: lib.fixedWidthString k "0" (toString n);
|
|
mkNode = id: let
|
|
a = id / 256;
|
|
b = id - 256 * a;
|
|
suffix = "${toStringFixed 3 a}${toStringFixed 3 b}";
|
|
suffixA = builtins.substring 0 2 suffix;
|
|
suffixB = builtins.substring 2 2 suffix;
|
|
suffixC = builtins.substring 4 2 suffix;
|
|
in {
|
|
ipv6 = "fd0a:66d3:1c19:42::${toString a}:${toString b}";
|
|
ipv4 = "10.42.${toString a}.${toString b}";
|
|
mac = "42:42:42:${suffixA}:${suffixB}:${suffixC}";
|
|
id = id;
|
|
};
|
|
mkHub = hub: hub // {
|
|
ipv6 = "fd0a:66d3:1c19:1000::${toString hub.id}";
|
|
};
|
|
in {
|
|
infra = {
|
|
vxlan = {
|
|
vni = 42;
|
|
port = 4789;
|
|
};
|
|
cidr = {
|
|
hubs.ipv6 = 64;
|
|
nodes = {
|
|
ipv4 = 16;
|
|
ipv6 = 64;
|
|
};
|
|
};
|
|
nodes = builtins.mapAttrs (_: mkNode) {
|
|
vogon = 1;
|
|
glucagon = 2;
|
|
ronderu = 3;
|
|
dodecagon = 4;
|
|
saigon = 5;
|
|
harpagon = 6;
|
|
patagon = 7;
|
|
wagon = 8;
|
|
lagon = 9;
|
|
aragon = 10;
|
|
pendragon = 11;
|
|
estragon = 12;
|
|
carlosgon = 13;
|
|
memoragon = 14;
|
|
hendecagon = 15;
|
|
dragon = 16;
|
|
perdrigon = 17;
|
|
martagon = 18;
|
|
};
|
|
hubs = builtins.mapAttrs (_: mkHub) {
|
|
vogon = {
|
|
id = 1;
|
|
publicKey = "d5vEJUiTFQh+MPQcU2JTaJ9lcsvzuoZkohxzeOigiVQ=";
|
|
endpoint = "193.54.193.161:51039";
|
|
};
|
|
glucagon = {
|
|
id = 2;
|
|
publicKey = "JfTsY3+jPTDgLDrECoSvoYs+6+GpjII0ookjhFhd5SY=";
|
|
endpoint = "89.234.162.224:51039";
|
|
};
|
|
ronderu = {
|
|
id = 3;
|
|
publicKey = "nOeLgmE1U6nY3UNxltQKwlID9lD7fvpEwij2XUvEGgg=";
|
|
endpoint = "137.194.12.129:51039";
|
|
};
|
|
saigon = {
|
|
id = 4;
|
|
publicKey = "9pGyE4+CQl+f8sFJ/Mkvp14yxDQJ0SJmGnher5Tgzjc=";
|
|
endpoint = "193.48.225.201:51039";
|
|
};
|
|
};
|
|
};
|
|
}
|