From f2d7c0b23c507e0823508948f3b002c9c6d5a586 Mon Sep 17 00:00:00 2001 From: Jack Kelly Date: Thu, 16 Nov 2023 10:19:02 +1000 Subject: [PATCH] framework AMD 7040: Add config option for wake-on-AC fix --- framework/13-inch/7040-amd/default.nix | 42 +++++++++++++++++++------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/framework/13-inch/7040-amd/default.nix b/framework/13-inch/7040-amd/default.nix index 3d4277d..9f31c6b 100644 --- a/framework/13-inch/7040-amd/default.nix +++ b/framework/13-inch/7040-amd/default.nix @@ -1,18 +1,38 @@ -{ lib, pkgs, ... }: { +{ config, lib, pkgs, ... }: + +let + cfg = config.hardware.framework.amd-7040; +in +{ imports = [ ../common ../common/amd.nix ]; - # Newer kernel is better for amdgpu driver updates - # Requires at least 5.16 for working wi-fi and bluetooth (RZ616, kmod mt7922): - # https://wireless.wiki.kernel.org/en/users/drivers/mediatek - boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.1") (lib.mkDefault pkgs.linuxPackages_latest); + options = { + hardware.framework.amd-7040.preventWakeOnAC = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Stop the system waking from suspend when the AC is plugged + in. The catch: it also disables waking from the keyboard. - # Custom udev rules - services.udev.extraRules = '' - # Prevent wake when plugging in AC during suspend. Trade-off: keyboard wake disabled. See: - # https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45 - #ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled" - ''; + See: + https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45 + ''; + }; + }; + + config = { + # Newer kernel is better for amdgpu driver updates + # Requires at least 5.16 for working wi-fi and bluetooth (RZ616, kmod mt7922): + # https://wireless.wiki.kernel.org/en/users/drivers/mediatek + boot.kernelPackages = lib.mkIf (lib.versionOlder pkgs.linux.version "6.1") (lib.mkDefault pkgs.linuxPackages_latest); + + services.udev.extraRules = lib.optionalString cfg.preventWakeOnAC '' + # Prevent wake when plugging in AC during suspend. Trade-off: keyboard wake disabled. See: + # https://community.frame.work/t/tracking-framework-amd-ryzen-7040-series-lid-wakeup-behavior-feedback/39128/45 + ACTION=="add", SUBSYSTEM=="serio", DRIVERS=="atkbd", ATTR{power/wakeup}="disabled" + ''; + }; }