lifetracker/modules/components/nvidia/default.nix
2025-01-24 21:42:14 -08:00

54 lines
1.3 KiB
Nix

{
lib,
config,
username,
pkgs,
...
}:
let
cfg = config.nvidia;
in
{
options = {
nvidia = {
enable = lib.mkEnableOption "Enable nvidia in NixOS & home-manager";
};
};
config = lib.mkIf cfg.enable {
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_xanmod_latest;
boot.initrd.kernelModules = [
"nvidia"
"nvidia_modeset"
"nvidia_uvm"
"nvidia_drm"
];
boot.blacklistedKernelModules = [ "nouveau" ];
boot.kernelParams = [ "nvidia_drm.fbdev=1" "nvidia-drm.modeset=1" "module_blacklist=nouveau" ];
environment.systemPackages = with pkgs; [
(writeShellScriptBin "nvidia-offload" ''
export __NV_PRIME_RENDER_OFFLOAD=1
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __VK_LAYER_NV_optimus=NVIDIA_only
exec -a "$0" "$@"
'')
];
hardware = {
graphics.enable = true;
nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = true;
nvidiaPersistenced = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.latest;
};
};
services.xserver.videoDrivers = [ "nvidia" ];
home-manager.users.${username} = { };
};
}