2023-03-22 22:26:02 +02:00
|
|
|
{ config, depot, lib, ... }:
|
2022-08-03 23:53:45 +03:00
|
|
|
|
|
|
|
let
|
2023-08-31 01:55:45 +03:00
|
|
|
inherit (depot) hours;
|
2022-08-03 23:53:45 +03:00
|
|
|
|
|
|
|
meshNet = rec {
|
|
|
|
netAddr = "10.1.1.0";
|
|
|
|
prefix = 24;
|
|
|
|
cidr = "${netAddr}/${toString prefix}";
|
|
|
|
};
|
|
|
|
|
2023-03-07 02:26:07 +02:00
|
|
|
getExtAddr = host: host.interfaces.primary.addrPublic;
|
2022-08-03 23:53:45 +03:00
|
|
|
in
|
|
|
|
{
|
2022-08-05 00:25:37 +03:00
|
|
|
vars = {
|
2023-03-22 22:26:02 +02:00
|
|
|
mesh = lib.genAttrs config.services.wireguard.nodes.mesh (node: config.hostLinks.${node}.mesh.extra);
|
2022-08-05 00:25:37 +03:00
|
|
|
inherit meshNet;
|
2022-08-04 00:36:11 +03:00
|
|
|
};
|
2023-03-22 22:26:02 +02:00
|
|
|
hostLinks = {
|
|
|
|
checkmate.mesh = {
|
2023-03-07 02:26:07 +02:00
|
|
|
ipv4 = getExtAddr hours.checkmate;
|
2023-03-01 02:02:41 +02:00
|
|
|
extra = {
|
|
|
|
meshIp = "10.1.1.32";
|
|
|
|
inherit meshNet;
|
|
|
|
pubKey = "fZMB9CDCWyBxPnsugo3Uxm/TIDP3VX54uFoaoC0bP3U=";
|
|
|
|
extraRoutes = [];
|
|
|
|
};
|
|
|
|
};
|
2023-11-04 01:27:30 +02:00
|
|
|
grail.mesh = {
|
|
|
|
ipv4 = getExtAddr hours.grail;
|
|
|
|
extra = {
|
|
|
|
meshIp = "10.1.1.6";
|
|
|
|
inherit meshNet;
|
|
|
|
pubKey = "0WAiQGdWySsGWFUk+a9e0I+BDTKwTyWQdFT2d7BMfDQ=";
|
|
|
|
extraRoutes = [];
|
|
|
|
};
|
|
|
|
};
|
2023-03-22 22:26:02 +02:00
|
|
|
thunderskin.mesh = {
|
2023-03-20 20:52:07 +02:00
|
|
|
ipv4 = getExtAddr hours.thunderskin;
|
|
|
|
extra = {
|
|
|
|
meshIp = "10.1.1.4";
|
|
|
|
inherit meshNet;
|
|
|
|
pubKey = "xvSsFvCVK8h2wThZJ7E5K0fniTBIEIYOblkKIf3Cwy0=";
|
|
|
|
extraRoutes = [];
|
|
|
|
};
|
|
|
|
};
|
2023-03-22 22:26:02 +02:00
|
|
|
VEGAS.mesh = {
|
2023-03-07 02:26:07 +02:00
|
|
|
ipv4 = getExtAddr hours.VEGAS;
|
2022-08-03 23:53:45 +03:00
|
|
|
extra = {
|
|
|
|
meshIp = "10.1.1.5";
|
|
|
|
inherit meshNet;
|
|
|
|
pubKey = "NpeB8O4erGTas1pz6Pt7qtY9k45YV6tcZmvvA4qXoFk=";
|
2023-03-07 02:26:07 +02:00
|
|
|
extraRoutes = [ "${hours.VEGAS.interfaces.vstub.addr}/32" "10.10.0.0/16" ];
|
2022-08-03 23:53:45 +03:00
|
|
|
};
|
|
|
|
};
|
2023-03-22 22:26:02 +02:00
|
|
|
prophet.mesh = {
|
2023-03-07 02:26:07 +02:00
|
|
|
ipv4 = getExtAddr hours.prophet;
|
2022-08-03 23:53:45 +03:00
|
|
|
extra = {
|
|
|
|
meshIp = "10.1.1.9";
|
|
|
|
inherit meshNet;
|
|
|
|
pubKey = "MMZAbRtNE+gsLm6DJy9VN/Y39E69oAZnvOcFZPUAVDc=";
|
2022-08-04 01:27:21 +03:00
|
|
|
extraRoutes = [];
|
2022-08-03 23:53:45 +03:00
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
services.wireguard = {
|
|
|
|
nodes = {
|
2023-11-04 01:27:30 +02:00
|
|
|
mesh = [ "checkmate" "grail" "thunderskin" "VEGAS" "prophet" ];
|
2024-07-22 00:35:11 +03:00
|
|
|
storm = [ "VEGAS" ];
|
2022-08-03 23:53:45 +03:00
|
|
|
};
|
|
|
|
nixos = {
|
|
|
|
mesh = ./mesh.nix;
|
2024-07-22 00:35:11 +03:00
|
|
|
storm = ./storm.nix;
|
2022-08-03 23:53:45 +03:00
|
|
|
};
|
2024-07-08 18:45:20 +03:00
|
|
|
secrets.meshPrivateKey = {
|
|
|
|
nodes = config.services.wireguard.nodes.mesh;
|
|
|
|
shared = false;
|
|
|
|
};
|
2022-08-03 23:53:45 +03:00
|
|
|
};
|
|
|
|
}
|