# Functionality that used to live in bootstrap.hswaw.net, a VM.
# PXE boot support has been removed and the functionality moved back to
# edge01.waw.bgp.wtf.

{ config, pkgs, ... }: {
  networking.bridges.bootstrap.interfaces = [];
  networking.interfaces.bootstrap.ipv4.addresses = [
    { address = "185.236.240.18"; prefixLength = 32; }
  ];
  services.dhcpd4 = {
    enable = true;
    interfaces = [ "bootstrap" "vl-dcsw-l3" ];
    extraConfig = ''
      # ISC DHCP is trash. We only use it in relay mode, yet we have to do
      # this.
      subnet 185.236.240.18 netmask 255.255.255.255 {}

      subnet 185.236.240.6 netmask 255.255.255.254 {}

      subnet 185.236.240.24 netmask 255.255.255.248 {
          option routers 185.236.240.25;
          range 185.236.240.29 185.236.240.30;
          option domain-name-servers 8.8.8.8;
      }

      subnet 185.236.240.32 netmask 255.255.255.240 {
          range 185.236.240.45 185.236.240.46;
          option routers 185.236.240.33;
          option domain-name-servers 8.8.8.8;
      }

      host bc01n01 {
          hardware ethernet 00:23:ae:fe:83:20;
          fixed-address 185.236.240.35;
          option host-name "bc01n01";
      }
      host bc01n02 {
          hardware ethernet 00:23:ae:fe:83:c4;
          fixed-address 185.236.240.36;
          option host-name "bc01n02";
      }
      host bc01n03 {
          hardware ethernet 00:23:ae:fe:42:80;
          fixed-address 185.236.240.37;
          option host-name "bc01n03";
      }
      host boston-packets {
          hardware ethernet 00:23:ae:fe:45:8c;
          fixed-address 185.236.240.38;
          option host-name "boston-packets.hackerspace.pl";
          #filename "ipxe.efi";
      }
      host dcr01s22 {
          hardware ethernet 90:1b:0e:08:12:b8;
          fixed-address 185.236.240.39;
          option host-name "dcr01s22";
          #filename "ipxe.efi";
      }
      host dcr01s24 {
          hardware ethernet 90:1b:0e:31:bb:6a;
          fixed-address 185.236.240.40;
          option host-name "dcr01s24";
          #filename "ipxe.efi";
      }
      host dsctf {
          hardware ethernet 00:23:ae:fe:45:50;
          fixed-address 185.236.240.41;
          option host-name "dsctf";
      }
      host dcr03s32b1 {
          hardware ethernet 02:01:87:4a:9a:b9;
          fixed-address 185.236.240.26;
          option host-name "dcr03s32b1";
      }
    '';
  };
}
