{ config, pkgs, lib, ... }: let cfg = config.my; in { config = lib.mkIf cfg.nvidia.enable { services.xserver.videoDrivers = lib.optionals cfg.nvidia.enable ["nvidia"]; hardware.nvidia = { modesetting.enable = true; powerManagement.enable = true; powerManagement.finegrained = false; open = true; nvidiaSettings = cfg.desktop.enable; # Optionally, you may need to select the appropriate driver version for your specific GPU. #package = config.boot.kernelPackages.nvidiaPackages.beta; package = config.boot.kernelPackages.nvidiaPackages.mkDriver { version = "590.48.01"; sha256_64bit = "sha256-ueL4BpN4FDHMh/TNKRCeEz3Oy1ClDWto1LO/LWlr1ok="; sha256_aarch64 = "sha256-xctt4TPRlOJ6r5S54h5W6PT6/3Zy2R4ASNFPu8TSHKM="; openSha256 = "sha256-ZpuVZybW6CFN/gz9rx+UJvQ715FZnAOYfHn5jt5Z2C8="; settingsSha256 = "sha256-ZpuVZybW6CFN/gz9rx+UJvQ715FZnAOYfHn5jt5Z2C8="; persistencedSha256 = lib.fakeSha256; }.overrideAttrs (oldAttrs: { buildInputs = oldAttrs.buildInputs ++ [ pkgs.pkg-config ]; }); }; hardware.nvidia-container-toolkit.enable = config.virtualisation.docker.enable; environment.systemPackages = with pkgs; [ nvidia_oc nvidia-vaapi-driver ] ++ lib.optionals config.virtualisation.docker.enable [ nvidia-docker nvidia-container-toolkit ]; }; }