From ca9a3149a5388f8e48722f504832c4290e4a2142 Mon Sep 17 00:00:00 2001 From: Felix Buehler Date: Sun, 4 May 2025 13:41:46 +0200 Subject: [PATCH] hardware/graphics: add AMD option --- machines/thinkman/hardware-configuration.nix | 9 ++-- modules/hardware/graphics/default.nix | 43 ++++++++++++++------ 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/machines/thinkman/hardware-configuration.nix b/machines/thinkman/hardware-configuration.nix index df207e2..af5463d 100644 --- a/machines/thinkman/hardware-configuration.nix +++ b/machines/thinkman/hardware-configuration.nix @@ -17,14 +17,15 @@ in my.hardware = { bluetooth.enable = true; debug.enable = true; - drive-monitor = { - enable = true; - }; + drive-monitor.enable = true; firmware = { enable = true; inherit cpuFlavor; }; - graphics.cpuFlavor = cpuFlavor; + graphics = { + enable = true; + inherit cpuFlavor; + }; id-card.enable = true; keychron.enable = true; monitor.enable = true; diff --git a/modules/hardware/graphics/default.nix b/modules/hardware/graphics/default.nix index a093a19..400df22 100644 --- a/modules/hardware/graphics/default.nix +++ b/modules/hardware/graphics/default.nix @@ -9,29 +9,46 @@ let in { options.my.hardware.graphics = with lib; { + enable = mkEnableOption "graphics configuration"; cpuFlavor = mkOption { - type = with types; nullOr (enum [ "intel" ]); + type = + with types; + nullOr (enum [ + "amd" + "intel" + ]); default = null; example = "intel"; description = "Which kind of GPU"; }; }; - config = lib.mkMerge [ - # Intel GPU - (lib.mkIf (cfg.cpuFlavor == "intel") { - nixpkgs.config.packageOverrides = pkgs: { - vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; - }; - hardware.graphics = { - enable = true; - extraPackages = with pkgs; [ + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + hardware.graphics.enable = true; + } + # Intel GPU + (lib.mkIf (cfg.cpuFlavor == "intel") { + nixpkgs.config.packageOverrides = pkgs: { + vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; }; + }; + hardware.graphics.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 ]; - }; - }) - ]; + }) + + (lib.mkIf (cfg.cpuFlavor == "amd") { + hardware.graphics.extraPackages = with pkgs; [ + amdvlk + ]; + hardware.graphics.extraPackages32 = with pkgs; [ + driversi686Linux.amdvlk + ]; + }) + ] + ); }