all repos — nixfiles @ 2e2883cbb2f61bfebbad09fa2a082df7375e8fe4

System and user configuration, managed by nix and home-manager

system/roles/dynamic-dns.nix (view raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{
  config,
  lib,
  ...
}:
let
  zone = "alin.ovh";
  server = "pdns.${zone}";
  domains = [
    "home.${zone}"
  ];
  wan = config.networking.nat.externalInterface;
in
{
  age.secrets = {
    dyndns.file = ../../secrets/dyndns.age;
  };

  services.ddclient = {
    enable = true;

    inherit zone server domains;

    protocol = "nsupdate";
    passwordFile = config.age.secrets.dyndns.path;
  };
  systemd.services.ddclient = {
    wants = [ "systemd-networkd-wait-online@${wan}.service" ];
    after = [ "systemd-networkd-wait-online@${wan}.service" ];
  };

  networking.firewall = {
    allowedTCPPorts = [
      22
      80
      443
    ];
    allowedUDPPorts = [
      443
    ];
  };

  services.caddy.virtualHosts = {
    ${builtins.head domains} = {
      extraConfig = lib.mkDefault ''
        respond "Hello, world!"
      '';
    };
  };
}