mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 22:28:03 +03:00
112 lines
2.9 KiB
Nix
112 lines
2.9 KiB
Nix
{ ... }:
|
|
{
|
|
flake.nixosModules.hw-graphics =
|
|
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
driver = config.elars.hardware.graphics.driver;
|
|
|
|
amd = {
|
|
hardware.graphics.extraPackages = with pkgs; [
|
|
rocmPackages.clr.icd
|
|
];
|
|
|
|
services.xserver.videoDrivers = [ "amdgpu" ];
|
|
};
|
|
|
|
intel =
|
|
let
|
|
wayland-intel-vaapi-driver = pkgs.intel-vaapi-driver.overrideAttrs (oldAttrs: {
|
|
version = "2.4.4-wayland-fix";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "irql-notlessorequal";
|
|
repo = "intel-vaapi-driver";
|
|
rev = "929e936ec1f451a5daa12b0c7367687b712b8c2c";
|
|
hash = "sha256-tZ1rZ+4bRxarcFQhP8V2Mfz0sJ5rBgHYLu2ulrQwL+U=";
|
|
};
|
|
});
|
|
wayland-intel-vaapi-driver-32 = pkgs.pkgsi686Linux.intel-vaapi-driver.overrideAttrs (oldAttrs: {
|
|
version = "2.4.4-wayland-fix";
|
|
src = pkgs.fetchFromGitHub {
|
|
owner = "irql-notlessorequal";
|
|
repo = "intel-vaapi-driver";
|
|
rev = "929e936ec1f451a5daa12b0c7367687b712b8c2c";
|
|
hash = "sha256-tZ1rZ+4bRxarcFQhP8V2Mfz0sJ5rBgHYLu2ulrQwL+U=";
|
|
};
|
|
|
|
});
|
|
in
|
|
{
|
|
hardware.graphics = {
|
|
extraPackages = [
|
|
wayland-intel-vaapi-driver
|
|
pkgs.libvdpau-va-gl
|
|
# OpenCL (GPU + CPU): pocl-gen7 in hw-ivb-drivers
|
|
];
|
|
extraPackages32 = [
|
|
wayland-intel-vaapi-driver-32
|
|
pkgs.pkgsi686Linux.libvdpau-va-gl
|
|
];
|
|
};
|
|
services.xserver.videoDrivers = [ "modesetting" ];
|
|
environment.variables = {
|
|
LIBVA_DRIVER_NAME = "i965";
|
|
};
|
|
};
|
|
|
|
nvidia = {
|
|
services.xserver.videoDrivers = [ "nvidia" ];
|
|
|
|
hardware.nvidia = {
|
|
modesetting.enable = true;
|
|
open = false;
|
|
nvidiaSettings = true;
|
|
package = config.boot.kernelPackages.nvidiaPackages.stable;
|
|
};
|
|
};
|
|
|
|
prime = {
|
|
hardware.nvidia.prime = {
|
|
offload.enable = true;
|
|
amdgpuBusId = "PCI:X:X:X";
|
|
nvidiaBusId = "PCI:X:X:X";
|
|
};
|
|
};
|
|
in
|
|
{
|
|
options.elars.hardware.graphics.driver = lib.mkOption {
|
|
type = lib.types.enum [
|
|
"intel"
|
|
"amd"
|
|
"nvidia"
|
|
"hybrid-amd-nvidia"
|
|
];
|
|
default = "intel";
|
|
};
|
|
|
|
config = lib.mkMerge [
|
|
{
|
|
hardware.graphics = {
|
|
enable = true;
|
|
enable32Bit = true;
|
|
};
|
|
}
|
|
|
|
(lib.mkIf (driver == "intel") intel)
|
|
(lib.mkIf (driver == "amd") amd)
|
|
(lib.mkIf (driver == "nvidia") nvidia)
|
|
(lib.mkIf (driver == "hybrid-amd-nvidia") (
|
|
lib.mkMerge [
|
|
amd
|
|
nvidia
|
|
prime
|
|
]
|
|
))
|
|
];
|
|
};
|
|
}
|