diff --git a/modules/hosts/nixos.nix b/modules/hosts/nixos.nix index 219e9c3..09e8063 100644 --- a/modules/hosts/nixos.nix +++ b/modules/hosts/nixos.nix @@ -32,7 +32,18 @@ in { boot.kernelPackages = pkgs.linuxPackages_latest; # Custom EDID override for Samsung 240Hz on DP-1 - boot.kernelParams = ["drm.edid_firmware=DP-1:edid/g80.bin"]; + # Extreme mt7921e fallback: disable PCIe ASPM globally + boot.kernelParams = [ + "drm.edid_firmware=DP-1:edid/g80.bin" + "pcie_aspm=off" + ]; + + # mt7921e stability tweaks + boot.extraModprobeConfig = '' + options mt7921e disable_aspm=Y + options mt7921e disable_clc=Y + ''; + hardware.firmware = [ (pkgs.runCommand "g80-edid-firmware" {} '' install -Dm444 ${../assets/edid/g80.bin} $out/lib/firmware/edid/g80.bin @@ -46,6 +57,21 @@ in { networking.networkmanager = { enable = true; wifi.powersave = false; + settings.device."wifi.scan-rand-mac-address" = "no"; + }; + + # Work around mt7921e getting stuck after suspend/resume + environment.etc."systemd/system-sleep/99-mt7921e-reset" = { + text = '' + #!/bin/sh + case "$1" in + post) + ${pkgs.kmod}/bin/modprobe -r mt7921e || true + ${pkgs.kmod}/bin/modprobe mt7921e + ;; + esac + ''; + mode = "0755"; }; # LocalSend