{ config, lib, pkgs, outputs, modulesPath, ... }: let # Set common boot paramaters commonKernelParams = [ # Nvidia settings "nvidia_drm.fbdev=1" "nouveau.config=NvGspRm=1" # VM/GPU passthrough "amd_iommu=on" "iommu=pt" "nested=1" # Virtualization nonsense "transparent_hugepage=never" # Isolate devices into IOMMU groups "pcie_acs_override=downstream,multifunction" "pci=routeirq" ]; in { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; # Set all boot options boot = { # Set a kernel version and load/blacklist drivers kernelPackages = pkgs.unstable.linuxPackages_zen; blacklistedKernelModules = [ "pcspkr" ]; kernel.sysctl."vm.max_map_count" = 2147483642; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; initrd = { availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; kernelModules = [ "vfio" "vfio_pci" "vfio_iommu_type1" "kvm-amd" ]; }; # Manage supported filesystems supportedFilesystems = { ntfs = true; zfs = lib.mkForce false; }; }; # Additional entry to boot from the second GPU specialisation = { gputwo.configuration = { boot.kernelParams = commonKernelParams ++ ["vfio-pci.ids=10de:2504,10de:228e"]; }; }; # Mount everything as necessary fileSystems = { "/" = { device = "/dev/disk/by-uuid/f0786b07-8303-416f-87ff-276bfd696387"; fsType = "bcachefs"; }; "/boot" = { device = "/dev/disk/by-uuid/EF6D-9009"; fsType = "vfat"; }; "/etc/libvirt" = { device = "/dev/disk/by-label/Qemu"; options = ["nosuid" "nodev" "nofail"]; }; "/var/lib/libvirt" = { depends = ["/etc/libvirt"]; device = "/etc/libvirt/varlibvirt"; options = ["bind" "rw"]; }; "/mnt/Linux1" = { device = "/dev/disk/by-label/Linux1"; options = ["nosuid" "nodev" "nofail" "x-gvfs-show"]; }; "/mnt/Linux2" = { device = "/dev/disk/by-label/Linux2"; options = ["nosuid" "nodev" "nofail" "x-gvfs-show"]; }; "/mnt/Windows1" = { device = "/dev/disk/by-label/Windows1"; options = ["nosuid" "nodev" "noauto"]; }; "/mnt/Windows2" = { device = "/dev/disk/by-label/Windows2"; options = ["nosuid" "nodev" "noauto"]; }; "/home/jimbo/JimboNFS" = { device = "${outputs.ips.server}:/export/JimboNFS"; fsType = "nfs4"; options = ["x-systemd.automount" "_netdev" "nofail" "noauto"]; }; }; # Set the swap partition swapDevices = [ {device = "/dev/disk/by-uuid/2e4c5120-716d-4cdc-84a0-c9e6391760db";} ]; # Enables DHCP on each ethernet and wireless interface. networking.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; }