{ config, pkgs, ... }:

{
  imports =
    [
      ./hardware-configuration.nix

      ./backup-scripts.nix
    ];

  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  networking.useDHCP = false;
  networking.interfaces.enp3s0.ipv6.addresses = [
    { address = "fd00:152:152:4::11"; prefixLength = 64; }
    { address = "2001:4cd8:100:1337::11"; prefixLength = 64; }
  ];
  networking.defaultGateway6 = { address = "fe80::1"; interface = "enp3s0"; };
  networking.nameservers = [ "fd00:152:152::1" ];

  # Keeping the harddrives quiet
  services.udev.extraRules = ''
    KERNEL=="sd?[0-9]", ENV{ID_MODEL}=="ST1000DM003-1SB102", ACTION=="add", RUN+="${pkgs.hdparm}/sbin/hdparm -S 24 /dev/%k"
  '';

  services.borgbackup.repos = {
    clerie-backup = {
      path = "/mnt/palladium/clerie-backup";
      authorizedKeysAppendOnly = [
        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFyk716RnbenPMkhLolyIkU8ywUSg8x7hjsXFFQoJx4I root@clerie-backup"
      ];
    };
    external-drive = {
      path = "/mnt/external-drive/clerie-backup";
      authorizedKeysAppendOnly = [
        "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPuh74Esdp8JPgIZzM372DaCwtAl2QNtRratnIFG0NRB root@clerie-backup"
      ];
    };
  };

  # Disable automatic directory creation for external-drive repo
  # The directory gets created by the disk formatting script
  # Correct permissons will be set right after mounting
  # This prevents borg from filling up the root drive when no drive is mounted
  systemd.services.borgbackup-repo-external-drive.enable = false;

  clerie.monitoring = {
    enable = true;
    id = "206";
    pubkey = "fHOYNZ5I3E2JPrd9dUrNBmu75weX4KbDih5q+GCk8Xk=";
  };

  system.stateVersion = "21.03";

}