diff --git a/hardware.nix b/hardware.nix index a1030a6..5ea39ae 100644 --- a/hardware.nix +++ b/hardware.nix @@ -14,9 +14,10 @@ in }; }; -# imports = [ -# (if (cfg.gpuVendor == "amd") then ./hardware/amd.nix else "") -# (if (cfg.gpuVendor == "nvidia") then ./hardware/nvidia.nix else "") -# (if (cfg.gpuVendor == "intel") then ./hardware/intel.nix else "") -# ]; + imports = [ + ./hardware/amd.nix + ./hardware/nvidia.nix + ./hardware/intel.nix + ]; + } diff --git a/hardware/amd.nix b/hardware/amd.nix index 35a20aa..7a10223 100644 --- a/hardware/amd.nix +++ b/hardware/amd.nix @@ -1,8 +1,22 @@ { config, pkgs, lib, ... }: with lib; let - inherit (cfg); + hardwareCfg = config.aviallon.hardware; in { - boot.initrd.kernelModules = [ "amdgpu" ]; + config = mkIf (hardwareCfg.gpuVendor == "amd") { + boot.initrd.kernelModules = [ "amdgpu" ]; + + boot.kernelParams = concatLists [ + # for Southern Islands (SI ie. GCN 1) cards + [ "radeon.si_support=0" "amdgpu.si_support=1" ] + # for Sea Islands (CIK ie. GCN 2) cards + [ "radeon.cik_support=0" "amdgpu.cik_support=1" ] + ]; + + hardware.opengl.extraPackages = with pkgs; [ + rocm-opencl-icd + rocm-opencl-runtime + ]; + }; } diff --git a/hardware/intel.nix b/hardware/intel.nix index ee644e2..df24272 100644 --- a/hardware/intel.nix +++ b/hardware/intel.nix @@ -1,8 +1,22 @@ { config, pkgs, lib, ... }: with lib; -#let -# inherit (cfg); -#in +let + hardwareCfg = config.aviallon.hardware; +in { - boot.initrd.kernelModules = [ "i915" ]; + config = mkIf (hardwareCfg.gpuVendor == "intel") { + boot.initrd.kernelModules = [ "i915" ]; + hardware.opengl = { + enable = true; + extraPackages = with pkgs; [ + # intel-media-driver # LIBVA_DRIVER_NAME=iHD + vaapiIntel # LIBVA_DRIVER_NAME=i965 (older but works better for Firefox/Chromium) + vaapiVdpau + libvdpau-va-gl + + intel-graphics-compiler + intel-compute-runtime + ]; + }; + }; } diff --git a/hardware/nvidia.nix b/hardware/nvidia.nix index 261f386..7d03796 100644 --- a/hardware/nvidia.nix +++ b/hardware/nvidia.nix @@ -1,8 +1,10 @@ { config, pkgs, lib, ... }: with lib; let - inherit (cfg); + hardwareCfg = config.aviallon.hardware; in { - boot.initrd.kernelModules = [ "nouveau" ]; + config = mkIf (hardwareCfg.gpuVendor == "nvidia") { + boot.initrd.kernelModules = [ "nouveau" ]; + }; }