{ config, pkgs, inputs, ... }: { nixpkgs.overlays = [ inputs.nvidia-patch.overlays.default ]; imports = [ ./display.nix ]; hardware = { enableAllFirmware = true; cpu = { cores = 8; threads = 16; amd.updateMicrocode = true; }; nvidia = { # FIXME: https://github.com/icewind1991/nvidia-patch-nixos/issues/9 package = let # FIXME: HDMI Crash, God knows when it will be reported and/or fixed nvidiaStable = config.boot.kernelPackages.nvidiaPackages.mkDriver { version = "580.82.09"; sha256_64bit = "sha256-Puz4MtouFeDgmsNMKdLHoDgDGC+QRXh6NVysvltWlbc="; sha256_aarch64 = "sha256-6tHiAci9iDTKqKrDIjObeFdtrlEwjxOHJpHfX4GMEGQ="; openSha256 = "sha256-YB+mQD+oEDIIDa+e8KX1/qOlQvZMNKFrI5z3CoVKUjs="; settingsSha256 = "sha256-um53cr2Xo90VhZM1bM2CH4q9b/1W2YOqUcvXPV6uw2s="; persistencedSha256 = "sha256-lbYSa97aZ+k0CISoSxOMLyyMX//Zg2Raym6BC4COipU="; }; maybeFbc = if builtins.hasAttr nvidiaStable.version pkgs.nvidia-patch-list.fbc then pkgs.nvidia-patch.patch-fbc nvidiaStable else nvidiaStable; nvidiaStableFinal = if builtins.hasAttr nvidiaStable.version pkgs.nvidia-patch-list.nvenc then pkgs.nvidia-patch.patch-nvenc maybeFbc else maybeFbc; in nvidiaStableFinal; open = true; powerManagement.enable = true; dynamicBoost.enable = true; prime = { offload = { enable = true; enableOffloadCmd = true; }; nvidiaBusId = "PCI:1:0:0"; amdgpuBusId = "PCI:6:0:0"; }; }; graphics = { enable32Bit = true; extraPackages = with pkgs; [ rocmPackages.clr rocmPackages.clr.icd ]; }; nvidia-container-toolkit.enable = config.virtualisation.containerd.enable || config.virtualisation.podman.enable; }; # Lobotomize CPU so that it stays below boiling temps powerManagement = { cpuFreqGovernor = "conservative"; cpufreq = { min = 403488; max = 4465261; }; }; boot = { kernelParams = [ "amd_pstate=passive" ]; kernelModules = [ "kvm-amd" ]; initrd.kernelModules = [ "nvme" "ahci" "usbhid" "amdgpu" "xhci_pci" "usb_storage" "usbcore" "sd_mod" "uas" "vfat" "nls_cp437" "nls_iso8859_1" ]; }; nixpkgs.config.cudaSupport = true; services = { xserver.videoDrivers = [ "nvidia" ]; fstrim.enable = true; logind.settings.Login.HandleLidSwitch = "ignore"; }; }