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