{ config, inputs, ... }: {
  imports = [
    ./hardware-configuration.nix
    inputs.self.nixosProfiles.desktop
  ];
  deviceSpecific.devInfo = {
    cpu = {
      vendor = "amd";
      clock = 4200;
      cores = 8;
    };
    drive = {
      type = "ssd";
      speed = 6000;
      size = 250;
    };
    bigScreen = true;
    ram = 32;
  };
  deviceSpecific.isHost = true;
  services.apcupsd.enable = true;
  boot.binfmt.emulatedSystems = [ "aarch64-linux" ];


  secrets.wireguard-wg0 = { };

  # networking.wireguard.interfaces.serokell = {
  #   listenPort = 51820;
  #   ips = [
  #     "172.20.0.52/32"
  #     # "fd73:7272:ed50::52/128"
  #   ];
  #   privateKeyFile = config.secrets.wireguard-serokell.decrypted;
  #   peers = [{
  #     allowedIPs = [
  #       "0.0.0.0/0"
  #       # "::/0"
  #     ];
  #     # endpoint = "serokell.net:35944";
  #     endpoint = "147.75.100.17:35944";
  #     publicKey = "sgLUARawWJejANs2CwuCptwJO55c4jkmnP0L14FNCyw=";
  #     persistentKeepalive = 24;
  #   }];
  # };

  services.ezwg = {
    enable = true;
    proxy = true;
    lanSize = 32;
    serverIP = "147.75.100.17";
    serverPort = 35944;
    serverKey = "sgLUARawWJejANs2CwuCptwJO55c4jkmnP0L14FNCyw=";
    privateKeyFile = config.secrets.wireguard-wg0.decrypted;
    vlanIP = "172.20.0.52";
  };

  # restart when the service fails to resolve DNS
  systemd.services.wireguard-serokell.serviceConfig = {
    Restart = "on-failure";
    RestartSec = "30s";
  };
}
