[Hardware/Nvidia] Add better NVidia GPU support, including proprietary drivers

This commit is contained in:
Antoine Viallon 2022-02-28 22:53:09 +01:00
parent cab07f3d14
commit 37ff0a5320
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
4 changed files with 58 additions and 2 deletions

View file

@ -4,7 +4,38 @@ let
hardwareCfg = config.aviallon.hardware;
in
{
imports = [
./nvidia
];
options.aviallon.hardware.useProprietary = mkEnableOption "nvidia proprietary drivers";
config = mkIf (hardwareCfg.gpuVendor == "nvidia") {
boot.initrd.kernelModules = [ "nouveau" ];
boot.initrd.kernelModules = if hardwareCfg.useProprietary then [
"nvidia"
"nvidia_drm"
"nvidia_uvm"
"nvidia_modeset"
] else [ "nouveau" ];
# boot.blacklistedKernelModules = optional hardwareCfg.useProprietary "nouveau";
services.xserver.videoDrivers = optional hardwareCfg.useProprietary "nvidia";
hardware.opengl.driSupport32Bit = true;
hardware.nvidia = {
powerManagement.enable = true;
modesetting.enable = true;
};
nixpkgs.config.allowUnfreePredicate = mkIf (hardwareCfg.useProprietary) (pkg: builtins.elem (lib.getName pkg) [
"nvidia-x11"
]);
hardware.opengl.extraPackages = with pkgs; [
libvdpau-va-gl
vaapiVdpau
];
hardware.opengl.extraPackages32 = with pkgs.pkgsi686Linux; [
libvdpau-va-gl
vaapiVdpau
];
};
}

View file

@ -0,0 +1,6 @@
{config, ...}:
{
imports = [
./vgpu.nix
];
}

19
hardware/nvidia/vgpu.nix Normal file
View file

@ -0,0 +1,19 @@
{config, pkgs, lib, ...}:
with lib;
let
cfg = config.aviallon.hardware;
useVgpu = (cfg.useProprietary &&
(cfg.gpuVendor == "nvidia") &&
(versionOlder config.boot.kernelPackages.kernel.version "5.10"));
in
{
imports = [
<nixos-nvidia-vgpu>
# (optional useVgpu (builtins.fetchTarball "https://github.com/danielfullmer/nixos-nvidia-vgpu/archive/master.tar.gz"))
];
config = mkIf useVgpu {
hardware.nvidia.vgpu.enable = true; # Enable NVIDIA KVM vGPU + GRID driver
hardware.nvidia.vgpu.unlock.enable = true; # Unlock vGPU functionality on consumer cards using DualCoder/vgpu_unlock project.
};
}