{ config, lib, ... }:

with lib;
let local-domain = "rus.selby.ca";
in {
  default-host = "10.0.0.1";

  mx = [ "mail.fudo.org" ];

  gssapi-realm = toUpper local-domain;

  hosts = {
    clunk = {
      ipv4-address = "10.0.0.1";
      mac-address = "02:44:d1:eb:c3:6b";
    };

    dns-proxy = {
      ipv4-address = "10.0.0.2";
      # This is just an alias for clunk's primary interface
    };

    google-wifi = {
      ipv4-address = "10.0.0.11";
      mac-address = "70:3a:cb:c0:3b:09";
    };

    plato = {
      ipv4-address = "10.0.0.102";
      mac-address = "00:e3:5c:68:79:a2";
    };

    pselby-work = {
      ipv4-address = "10.0.0.151";
      mac-address = "00:50:b6:aa:bd:b3";
    };

    downstairs-desktop = {
      ipv4-address = "10.0.0.100";
      mac-address = "90:b1:1c:8e:29:cf";
    };

    upstairs-desktop = {
      ipv4-address = "10.0.0.101";
      mac-address = "80:e8:2c:22:65:c2";
    };
  };

  aliases = {
    dns-hole = "clunk";
    gateway = "clunk";
    upstairs = "upstairs-desktop";
    downstairs = "downstairs-desktop";
  };

  srv-records = {
    tcp = {
      domain = [{
        port = 53;
        host = "clunk.${local-domain}";
      }];
      kerberos = [{
        port = 88;
        host = "clunk.${local-domain}";
      }];
      kerberos-adm = [{
        port = 749;
        host = "clunk.${local-domain}";
      }];
      ssh = [{
        port = 22;
        host = "clunk.${local-domain}";
      }];
    };

    udp = {
      domain = [{
        port = 53;
        host = "clunk.${local-domain}";
      }];
      kerberos = [{
        port = 88;
        host = "clunk.${local-domain}";
      }];
      kerboros-master = [{
        port = 88;
        host = "clunk.${local-domain}";
      }];
      kpasswd = [{
        port = 464;
        host = "clunk.${local-domain}";
      }];
    };
  };
}