{ config, pkgs, lib, ... }:

{
  imports =
    [
      ./hardware-configuration.nix

      ../../base.nix
      ../../common/metrics-exporters.nix
      ./amalieem.nix
      ./backup.nix
      # ./exports.nix
      ./filesystems.nix

      # ./services/archivebox.nix
      ./services/calibre.nix
      # ./services/ersatztv.nix
      ./services/jellyfin.nix
      ./services/komga.nix
      ./services/nextcloud.nix
      ./services/nginx.nix
      ./services/postgres.nix
      ./services/timemachine.nix
  ];

  networking = {
    hostName = "challenger";
    bridges.br0.interfaces = [ "ens18" ];
    interfaces.br0.useDHCP = false;
    interfaces.br0.ipv4.addresses = [
      { address = "192.168.10.161"; prefixLength = 24; }
    ];

    hostId = "828ab735";
    defaultGateway = "192.168.10.1";
  };

  sops.defaultSopsFile = ../../secrets/challenger/challenger.yaml;

  environment.variables = { EDITOR = "vim"; };
  environment.systemPackages = with pkgs; [
    zfs
  ];

  virtualisation.docker.enable = true;
  virtualisation.oci-containers.backend = "docker";

  nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
       "nvidia-x11"
       "nvidia-settings"
  ];

  hardware.nvidia = {
    modesetting.enable = true;
    open = false;
  };

  hardware.graphics.enable = true;
  services.xserver.videoDrivers = ["nvidia"];

  system.stateVersion = "24.05";
}