{ config, lib, ... }: let inherit (lib) mkEnableOption mkIf mkMerge; cfg = config.hardware.asus.zephyrus.ga402x; in { imports = [ ../shared.nix ]; options.hardware.asus.zephyrus.ga402x.amdgpu = { recovery.enable = (mkEnableOption "Enable amdgpu.gpu_recovery kernel boot param") // { default = false; }; sg_display.enable = (mkEnableOption "Enable amdgpu.gpu_recovery kernel boot param") // { default = true; }; psr.enable = (mkEnableOption "Enable amdgpu.dcdebugmask=0x10 kernel boot param") // { default = true; }; }; config = mkMerge [ (mkIf cfg.amdgpu.recovery.enable { # Hopefully fixes for where the kernel sometimes hangs when suspending or hibernating # (Though, I'm very suspicious of the Mediatek Wifi...) boot.kernelParams = [ "amdgpu.gpu_recovery=1" ]; }) (mkIf (!cfg.amdgpu.sg_display.enable) { # Can help solve flickering/glitching display issues since Scatter/Gather code was reenabled boot.kernelParams = [ "amdgpu.sg_display=0" ]; }) (mkIf (!cfg.amdgpu.psr.enable) { # Can help solve flickering/glitching display issues since Scatter/Gather code was reenabled boot.kernelParams = [ "amdgpu.dcdebugmask=0x10" ]; }) ]; }