main
1{
2 den.hosts.cyrene = {
3 address = {
4 ipv4.secret = {
5 name = "host-ipv4-cyrene";
6 file = ./ipv4.age;
7 };
8 ipv6.secret = {
9 name = "host-ipv6-cyrene";
10 file = ./ipv6.age;
11 };
12 ipv4.tailscale = "100.65.34.97";
13 ipv6.tailscale = "fd7a:115c:a1e0:1bef:f9f:bba0:707b:d238";
14 };
15 };
16
17 den.aspects.cyrene = {
18 nixos = {
19 host,
20 config,
21 ...
22 }: {
23 networking = {
24 useNetworkd = true;
25 useDHCP = false;
26 usePredictableInterfaceNames = false; # Useless in VPS
27 };
28
29 systemd.network.networks = {
30 "40-eth0" = {
31 matchConfig.Name = "eth0";
32 linkConfig.RequiredForOnline = "routable";
33 };
34 };
35
36 environment.etc."systemd/network/40-eth0.network.d/99-address-n-routes.conf" = {
37 source = config.vaultix.templates.networkd-secrets.path;
38 };
39
40 vaultix.templates.networkd-secrets = {
41 content = ''
42 [Network]
43 Address=${config.vaultix.placeholder.${host.address.ipv4.secret.name}}/22
44 Address=${config.vaultix.placeholder.${host.address.ipv6.secret.name}}/64
45 '';
46 owner = "systemd-network";
47 group = "systemd-network";
48 mode = "0440";
49 };
50 vaultix.secrets.${host.address.ipv4.secret.name}.file = host.address.ipv4.secret.file;
51 vaultix.secrets.${host.address.ipv6.secret.name}.file = host.address.ipv6.secret.file;
52 };
53 };
54}