diff --git a/modules/common/hardware/lenovo-x1/definitions/default.nix b/modules/common/hardware/lenovo-x1/definitions/default.nix index f18b9813f..bd36da5dd 100644 --- a/modules/common/hardware/lenovo-x1/definitions/default.nix +++ b/modules/common/hardware/lenovo-x1/definitions/default.nix @@ -30,6 +30,8 @@ in { in '' # Laptop keyboard SUBSYSTEM=="input", ATTRS{name}=="AT Translated Set 2 keyboard", GROUP="kvm" + # Laptop keyboard multimedia buttons + SUBSYSTEM=="input", ATTRS{name}=="ThinkPad Extra Buttons", GROUP="kvm" # Laptop TrackPoint SUBSYSTEM=="input", ATTRS{name}=="TPPS/2 Elan TrackPoint", GROUP="kvm" # Lenovo X1 integrated webcam @@ -44,6 +46,7 @@ in { virtioInputHostEvdevs = [ # Lenovo X1 touchpad and keyboard "/dev/input/by-path/platform-i8042-serio-0-event-kbd" + "/dev/input/by-path/platform-thinkpad_acpi-event" "/dev/mouse" "/dev/touchpad" # Lenovo X1 trackpoint (red button/joystick) diff --git a/targets/lenovo-x1/everything.nix b/targets/lenovo-x1/everything.nix index 79f7523b8..9a7cad342 100644 --- a/targets/lenovo-x1/everything.nix +++ b/targets/lenovo-x1/everything.nix @@ -134,6 +134,7 @@ "iommu=pt" # Prevent i915 module from being accidentally used by host "module_blacklist=i915" + "acpi_backlight=vendor" "vfio-pci.ids=${builtins.concatStringsSep "," vfioPciIds}" ]; diff --git a/targets/lenovo-x1/guivmExtraModules.nix b/targets/lenovo-x1/guivmExtraModules.nix index 3a486f6dc..376cfa552 100644 --- a/targets/lenovo-x1/guivmExtraModules.nix +++ b/targets/lenovo-x1/guivmExtraModules.nix @@ -144,6 +144,24 @@ }; }; + # Keyboard multimedia key bindings + programs.light.enable = true; + services.actkbd = { + enable = true; + bindings = [ + { + keys = [224]; + events = ["key"]; + command = "/run/current-system/sw/bin/light -U 10"; + } + { + keys = [225]; + events = ["key"]; + command = "/run/current-system/sw/bin/light -A 10"; + } + ]; + }; + # Open TCP port for the PDF XDG socket networking.firewall.allowedTCPPorts = [xdgPdfPort]; # Early KMS needed for GNOME to work inside GuiVM