feat(hardware): add gpu modules for intel/amd/nvidia
This commit is contained in:
parent
eb93983bfe
commit
8f229750b0
4 changed files with 136 additions and 0 deletions
29
system/modules/hardware/gpu/amd/default.nix
Normal file
29
system/modules/hardware/gpu/amd/default.nix
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
gpu = config.systemModules.hardware.gpu;
|
||||||
|
inherit (lib) mkIf mkDefault;
|
||||||
|
inherit (builtins) elem;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
config = mkIf (elem gpu.type ["amd"]) {
|
||||||
|
hardware.opengl = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
vulkan-tools
|
||||||
|
vulkan-loader
|
||||||
|
vulkan-extension-layer
|
||||||
|
vulkan-validation-layer
|
||||||
|
amdvlk
|
||||||
|
mesa
|
||||||
|
];
|
||||||
|
extraPackages32 = [ pkgs.driversi686Linux.amdvlk ];
|
||||||
|
boot = {
|
||||||
|
initrd.kernelModules = ["amdgpu"];
|
||||||
|
kernelModules = ["amdgpu"];
|
||||||
|
};
|
||||||
|
environment.systemPackages = [ pkgs.nvtopPackages.amd ];
|
||||||
|
services.xserver.videoDrivers = mkDefault ["modesetting" "amdgpu"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
19
system/modules/hardware/gpu/default.nix
Normal file
19
system/modules/hardware/gpu/default.nix
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (lib) types mkOption;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./amd
|
||||||
|
./intel
|
||||||
|
./nvidia
|
||||||
|
];
|
||||||
|
|
||||||
|
options.systemModules.hardware.gpu.type = mkOption {
|
||||||
|
type = with types; nullOr (enum ["intel" "amd" "nvidia"]);
|
||||||
|
default = null;
|
||||||
|
description = "Type of gpu system module to use";
|
||||||
|
};
|
||||||
|
}
|
||||||
37
system/modules/hardware/gpu/intel/default.nix
Normal file
37
system/modules/hardware/gpu/intel/default.nix
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
gpu = config.systemModules.hardware.gpu;
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
inherit (builtins) elem;
|
||||||
|
|
||||||
|
vaapiIntel = pkgs.vaapiIntel.override {enableHypbridCodec = true;};
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
config = mkIf (elem gpu.type ["intel"]) {
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = ["modesetting"];
|
||||||
|
hardware.opengl = {
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
vaapiIntel
|
||||||
|
vaapiVdpau
|
||||||
|
libvdpau-va-gl
|
||||||
|
|
||||||
|
intel-compute-runtime
|
||||||
|
intel-media-driver
|
||||||
|
];
|
||||||
|
extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||||
|
vaapiIntel
|
||||||
|
vaapiVdpau
|
||||||
|
libvdpau-va-gl
|
||||||
|
|
||||||
|
intel-media-driver
|
||||||
|
];
|
||||||
|
};
|
||||||
|
boot.initrd.kernelModules = ["i915"];
|
||||||
|
environment.variables = mkIf config.hardware.opengl.enable {
|
||||||
|
VDPAU_DRIVER = "va_gl";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
51
system/modules/hardware/gpu/nvidia/default.nix
Normal file
51
system/modules/hardware/gpu/nvidia/default.nix
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
gpu = config.systemModules.hardware.gpu;
|
||||||
|
inherit (lib) mkIf mkDefault;
|
||||||
|
inherit (builtins) elem;
|
||||||
|
production = config.boot.kernelPackages.nvidiaPackages.production;
|
||||||
|
# beta = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
# TODO: make option to choose nvidia package
|
||||||
|
config = mkIf (elem gpu.type ["nvidia"]) {
|
||||||
|
hardware = {
|
||||||
|
nvidia = {
|
||||||
|
open = mkDefault true;
|
||||||
|
package = production;
|
||||||
|
forceFullCompositionPipeline = true;
|
||||||
|
nvidiaSettings = false;
|
||||||
|
nvidiaPersistenced = true;
|
||||||
|
modesetting.enable = true;
|
||||||
|
powermanagement = {
|
||||||
|
enable = mkDefault true;
|
||||||
|
finegrained = mkDefault false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
opengl = {
|
||||||
|
extraPackages = with pkgs; [ nvidia-vaapi-driver ];
|
||||||
|
extraPackages32 = with pkgs.pkgsi686Linux; [ nvidia-vaapi-driver ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
||||||
|
libva
|
||||||
|
libva-utils
|
||||||
|
|
||||||
|
vulkan-loader
|
||||||
|
vulkan-validation-layers
|
||||||
|
vulkan-tools
|
||||||
|
vulkan-extension-layer
|
||||||
|
|
||||||
|
mesa
|
||||||
|
|
||||||
|
nvtopPackages.nvidia
|
||||||
|
];
|
||||||
|
environment.sessionVariables = {
|
||||||
|
LIBVA_DRIVER_NAME = "nvidia";
|
||||||
|
NVD_BACKEND = "direct";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue