{ config, lib, pkgs, inputs, system, ... }:
let
  cfg = config.mods;
  keys = [
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKEio+Y5wBVD1wILaH2R3wV10FvVjiqy/4gGBWHOITTB muon@muon"
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKevYmkH7xvYoquBjnYZ7PJiVqf+GOh9fxAJBN6wZGBB gin4@hi.is"
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmAOd9VbhyJeibt6Vrb101MNTk5W8+rh94Djv/C+pyu muon@muho"
  ];

in {
  # Hardware
  imports = [ ./hardware-configuration.nix ../ports.nix ];

  # System
  mods.user.name = "muon";
  networking.hostName = "mups";
  mods.home.file = ./home.nix;

  # Modules
  mods.desktop.enable = false;

  mods.theme.enable = true;
  mods.theme.scheme = "woodland";
  mods.theme.wallpaper = ./wallpaper.png;

  mods.tailscale.enable = true;

  mods.unfree.minecraft.enable = false;
  mods.server.astral.enable = false;
  mods.server.astral.memory = "3G";

  # mods.server.sync.enable = false;
  # mods.server.sync.address = "100.85.27.29";
  # mods.server.sync.port = "8385";

  mods.server.headscale.enable = false;
  mods.server.wireguard.enable = true;
  mods.server.nginx.enable = true;

  # Use the GRUB 2 boot loader.
  boot.loader.grub.enable = true;
  boot.loader.grub.device = "/dev/vda";
  boot.initrd.checkJournalingFS = false;

  services.static-web-server = {
    enable = true;
    listen = "[::]:8008";
    root = "/var/www";
    configuration = { general = { directory-listing = true; }; };
  };
  services.nginx.virtualHosts = {
    "muon.host" = {
      enableACME = true;
      forceSSL = true;
      default = true;
      locations."/" = { proxyPass = "http://localhost:8008"; };
    };
    "nvr.muon.host" = {
      enableACME = true;
      forceSSL = true;
      locations."/" = { proxyPass = "http://10.0.0.2:8095"; };
    };
    "tetterodesportcomplex.nl" = {
      enableACME = true;
      forceSSL = true;
      locations."/" = { proxyPass = "http://10.0.0.3:5001"; };
    };
    "www.tetterodesportcomplex.nl" = {
      enableACME = true;
      forceSSL = true;
      locations."/" = { proxyPass = "http://10.0.0.3:5001"; };
    };
  };

  # Enable the OpenSSH daemon.
  services.openssh.enable = true;
  users.users.muon.openssh.authorizedKeys.keys = keys;
  users.users.root.openssh.authorizedKeys.keys = keys;

  networking.firewall = {
    enable = true;
    allowedTCPPorts = [ 80 8080 ];
  };

  system.stateVersion = "24.05"; # Did you read the comment?
}

