{ pkgs, config, lib, ... }: let cfg = config.system.nvidia; in { options.system.nvidia = { enable = lib.mkEnableOption "enables nvidia"; }; config = lib.mkIf cfg.enable { services.xserver.videoDrivers = ["nvidia"]; boot.kernelModules = ["nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm"]; # boot.kernelModules = [ "nvidia" ]; hardware.graphics = { enable = true; enable32Bit = true; }; # enable nvidia proprietary driver hardware.nvidia = { modesetting.enable = true; # required open = false; # use proprietary driver nvidiaSettings = true; # no shit powerManagement.enable = false; # can cause sleep issues package = config.boot.kernelPackages.nvidiaPackages.stable; }; # enable docker gpu passthrough hardware.nvidia-container-toolkit.enable = true; virtualisation.docker.daemon.settings.features.cdi = true; virtualisation.docker.rootless.daemon.settings.features.cdi = true; }; }