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

{
  imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];

  # Set all boot options
  boot = {
    blacklistedKernelModules = [
      "pcspkr"
    ];               
    initrd = {
      availableKernelModules = [
        "xhci_pci"
	"ehci_pci"
	"ahci"
	"nvme"
	"usbhid"
	"sd_mod"
	"sr_mod"
      ];
      kernelModules = [
        "kvm-intel"
      ];
    };

    # Use the Systemd-Boot bootloader
    loader.systemd-boot = {
      enable = true;
      netbootxyz.enable = true;
    };
  };

  # Mounting options
  fileSystems = {
    "/" = { 
      device = "/dev/disk/by-uuid/8f81cab7-9381-4950-b77f-b85c5fdbad16";
      fsType = "ext4";
    };
    "/boot" = {
      device = "/dev/disk/by-uuid/2034-754A";
      fsType = "vfat";
    };
    "/export/JimboNFS" = {
      device = "/dev/disk/by-uuid/713fcd92-534c-4153-8e04-e0c6fe5f6a51";
      fsType = "ext4";
      noCheck = true;
    };
    "/home/jimbo/JimboNFS" = {
      device = "/export/JimboNFS";
      fsType = "none";
      options = [ "bind" ];
    };

    # Atrocity of var bindmounts
    "/mnt/nextcloud/data/JimboNFS" = {
      device = "/export/JimboNFS";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/bitwarden_rs" = {
      device = "/export/JimboNFS/System/var/lib/bitwarden_rs";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/gitea" = {
      device = "/export/JimboNFS/System/var/lib/gitea";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/matrix-synapse" = {
      device = "/export/JimboNFS/System/var/lib/matrix-synapse";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/nextcloud" = {
      device = "/export/JimboNFS/System/var/lib/nextcloud";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/owncast" = {
      device = "/export/JimboNFS/System/var/lib/owncast";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/docker/volumes/azuracast_station_data/_data/jimbops/media/Music" = {
      device = "/export/JimboNFS/Music";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/private/pufferpanel/servers" = {
      device = "/export/JimboNFS/System/var/lib/pufferpanel/servers";
      fsType = "none";
      options = [ "bind" ];
    };
    "/var/lib/mastodon" = {
      device = "/export/JimboNFS/System/var/lib/mastodon";
      fsType = "none";
      options = [ "bind" ];
    };
  };
  swapDevices = [
    { device = "/dev/disk/by-uuid/ec422cad-bf93-4b15-b989-2c807f1073a4"; }
  ];

  # Enables DHCP on each ethernet and wireless interface.
  networking.useDHCP = lib.mkDefault true;

  # Hardware settings
  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
  boot.swraid.enable = true;
}