2024-09-23 16:22:01 -04:00
|
|
|
{ config, lib, pkgs, outputs, modulesPath, ... }: let
|
2024-08-24 22:16:51 -04:00
|
|
|
# Set common boot paramaters
|
|
|
|
commonKernelParams = [
|
|
|
|
# Nvidia settings
|
|
|
|
"nvidia_drm.fbdev=1"
|
2024-08-29 14:15:26 -04:00
|
|
|
"nouveau.config=NvGspRm=1"
|
2024-08-24 22:16:51 -04:00
|
|
|
|
|
|
|
# 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" = {
|
2024-09-23 16:22:01 -04:00
|
|
|
device = "${outputs.ips.server}:/export/JimboNFS";
|
2024-08-24 22:16:51 -04:00
|
|
|
fsType = "nfs4";
|
|
|
|
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
|
|
|
|
};
|
2024-09-23 17:01:02 -04:00
|
|
|
"/home/jimbo/FreecornNFS" = {
|
|
|
|
device = "${outputs.secrets.cornIP}:/export/freecornNFS";
|
|
|
|
fsType = "nfs4";
|
|
|
|
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
|
|
|
|
};
|
2024-08-24 22:16:51 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
# 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;
|
|
|
|
}
|