diff --git a/profiles/hardware/gpu/nvidia.nix b/profiles/hardware/gpu/nvidia.nix index b91d629..eee8907 100644 --- a/profiles/hardware/gpu/nvidia.nix +++ b/profiles/hardware/gpu/nvidia.nix @@ -1,11 +1,34 @@ -{ ... }: { +{ config, pkgs, lib, ... }: +let + nvidia_x11 = config.boot.kernelPackages.nvidia_x11; + nvidia_gl = nvidia_x11.out; + nvidia_gl_32 = nvidia_x11.lib32; +in +{ imports = [ ./common.nix ]; services.xserver.videoDrivers = [ "nvidia" ]; - hardware.nvidia = { - modesetting.enable = true; - powerManagement.enable = true; + boot = { + blacklistedKernelModules = [ "nouveau" ]; + extraModulePackages = [ nvidia_x11 ]; }; + hardware = { + nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + }; + opengl = { + extraPackages = [ nvidia_gl ]; + extraPackages32 = [ nvidia_gl_32 ]; + }; + }; + + systemd.services.nvidia-control-devices = { + wantedBy = [ "multi-user.target" ]; + serviceConfig.ExecStart = "${nvidia_x11.bin}/bin/nvidia-smi"; + }; + + virtualisation.docker.enableNvidia = true; }