1{ pkgs, config, ... }:
2let
3 cfg42 = config.dn42;
4in
5{
6 imports = [
7 ./peers
8 ];
9 networking = {
10 interfaces.lo = {
11 ipv4.addresses = [
12 {
13 address = "172.20.43.96";
14 prefixLength = 32;
15 }
16 ];
17 ipv6.addresses = [
18 {
19 address = "fd21:1500:66b0::1";
20 prefixLength = 128;
21 }
22 {
23 address = "fe80::1";
24 prefixLength = 128;
25 }
26 ];
27 };
28 };
29
30 environment.systemPackages = with pkgs; [
31 dnsutils
32 mtr
33 tcpdump
34 wireguard-tools
35 ];
36 dn42 = {
37 enable = true;
38 # ASN corresponding to DN42 PYRONET
39 as = 4242422459;
40 # Communities config
41 # https://dn42.dev/howto/BGP-communities
42 region = 42;
43 country = 1840;
44 routerId = cfg42.addr.v4;
45 # Primary IP Addresses
46 addr = {
47 v4 = "172.20.43.96";
48 v6 = "fd21:1500:66b0::1";
49 };
50 # Owned IP Ranges
51 nets = {
52 v4 = [ "172.20.43.96/27" ];
53 v6 = [ "fd21:1500:66b0::/48" ];
54 };
55
56 # Enable StayRTR
57 # https://github.com/bgp/stayrtr
58 stayrtr.enable = true;
59 wg.tunnelDefaults = {
60 privateKeyFile = "/run/agenix/dn42-privkey";
61 localAddrs.v4 = cfg42.addr.v4;
62 };
63 };
64}