2024-06-10 16:09:54 +02:00
|
|
|
{ pkgs, config, ... }:
|
|
|
|
{
|
2024-09-13 10:46:49 +02:00
|
|
|
services.xserver.videoDrivers = [ "nvidia" ];
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
|
|
pciutils
|
|
|
|
file
|
|
|
|
gnumake
|
|
|
|
gcc
|
|
|
|
cudatoolkit
|
|
|
|
podman
|
|
|
|
nvidia-container-toolkit
|
|
|
|
];
|
|
|
|
nixpkgs.config.cudaSupport = true;
|
|
|
|
hardware.nvidia-container-toolkit.enable = true;
|
|
|
|
hardware.nvidia = {
|
|
|
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
|
|
modesetting.enable = true;
|
|
|
|
powerManagement.enable = false;
|
|
|
|
powerManagement.finegrained = true;
|
|
|
|
open = false;
|
|
|
|
nvidiaSettings = true;
|
|
|
|
prime = {
|
|
|
|
intelBusId = "PCI:0:2:0";
|
|
|
|
nvidiaBusId = "PCI:1:0:0";
|
|
|
|
offload = {
|
|
|
|
enable = true;
|
|
|
|
enableOffloadCmd = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
systemd.services.nvidia-control-devices = {
|
|
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig.ExecStart = "${pkgs.linuxPackages.nvidia_x11.bin}/bin/nvidia-smi";
|
2024-06-10 16:09:54 +02:00
|
|
|
};
|
|
|
|
|
2024-09-13 10:46:49 +02:00
|
|
|
specialisation = {
|
|
|
|
docked.configuration = {
|
|
|
|
system.nixos.tags = [ "docked" ];
|
|
|
|
hardware.nvidia = {
|
|
|
|
powerManagement.finegrained = pkgs.lib.mkForce false;
|
|
|
|
prime.offload.enable = pkgs.lib.mkForce false;
|
|
|
|
prime.offload.enableOffloadCmd = pkgs.lib.mkForce false;
|
|
|
|
prime.sync.enable = pkgs.lib.mkForce true;
|
|
|
|
};
|
|
|
|
};
|
2024-10-06 18:01:46 +02:00
|
|
|
disable.configuration = {
|
|
|
|
system.nixos.tags = [ "disable" ];
|
|
|
|
hardware.nvidia = {
|
|
|
|
modesetting.enable = pkgs.lib.mkForce false;
|
|
|
|
powerManagement.enable = pkgs.lib.mkForce false;
|
|
|
|
powerManagement.finegrained = pkgs.lib.mkForce false;
|
|
|
|
open = pkgs.lib.mkForce false;
|
|
|
|
nvidiaSettings = pkgs.lib.mkForce false;
|
|
|
|
prime.offload.enable = pkgs.lib.mkForce false;
|
|
|
|
prime.offload.enableOffloadCmd = pkgs.lib.mkForce false;
|
|
|
|
};
|
|
|
|
boot.extraModprobeConfig = ''
|
|
|
|
blacklist nouveau
|
|
|
|
options nouveau modeset=0
|
|
|
|
'';
|
|
|
|
|
|
|
|
services.udev.extraRules = ''
|
|
|
|
# Remove NVIDIA USB xHCI Host Controller devices, if present
|
|
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA USB Type-C UCSI devices, if present
|
|
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA Audio devices, if present
|
|
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
# Remove NVIDIA VGA/3D controller devices
|
|
|
|
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1"
|
|
|
|
'';
|
|
|
|
boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia_drm" "nvidia_modeset" ];
|
|
|
|
};
|
2024-06-10 16:09:54 +02:00
|
|
|
};
|
|
|
|
}
|