nixcfg/hosts/homelab/hardware/nvidia.nix
2024-10-18 18:49:54 +03:00

68 lines
1.5 KiB
Nix

{ config
, lib
, pkgs
, ...
}:
with lib; let
cfg = config.hardware.nvidia;
in
{
options.hardware.nvidia.enable = mkEnableOption "nvidia driver";
config = mkIf cfg.enable {
#Allow unfree packages
nixpkgs.config.allowUnfree = true;
services.xserver = {
videoDrivers = [ "nvidia" ];
};
hardware = {
graphics.enable = true;
# opengl.driSupport = true;
graphics.enable32Bit = true;
graphics = {
extraPackages = with pkgs; [
intel-media-driver # LIBVA_DRIVER_NAME=iHD
# intel-vaapi-driver # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium)
# libvdpau-va-gl
# vaapiVdpau
# mesa.drivers
];
};
nvidia.nvidiaSettings = true;
nvidia.powerManagement.enable = false;
nvidia.powerManagement.finegrained = false;
nvidia.open = false;
# nvidia.forceFullCompositionPipeline = true;
# nvidia-drm.modeset=1 is required for some wayland compositors, e.g. sway
nvidia.modesetting.enable = false;
#nvidia.nvidiaPersistenced = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
};
# Nvidia in Docker
virtualisation.docker = {
enable = true;
enableOnBoot = true;
#enableNvidia = true;
};
hardware.nvidia-container-toolkit.enable = true;
environment.systemPackages = with pkgs; [
cudatoolkit
];
};
}