From a5d63dcf65bfb9020ecabb8225879229ed181298 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Thu, 3 Jun 2021 18:10:37 +0200 Subject: [PATCH] modules: hardware: add mx-ergo This adds the ability to scroll using the ball, which is way better. --- modules/hardware/default.nix | 1 + modules/hardware/mx-ergo.nix | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 modules/hardware/mx-ergo.nix diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 1740080..8e5e003 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -5,6 +5,7 @@ imports = [ ./bluetooth.nix ./ergodox.nix + ./mx-ergo.nix ./networking.nix ./sound.nix ./upower.nix diff --git a/modules/hardware/mx-ergo.nix b/modules/hardware/mx-ergo.nix new file mode 100644 index 0000000..e4e55a1 --- /dev/null +++ b/modules/hardware/mx-ergo.nix @@ -0,0 +1,26 @@ +# Hold down the `next page` button to scroll using the ball +{ config, lib, ... }: +let + cfg = config.my.hardware.mx-ergo; +in +{ + options.my.hardware.mx-ergo = with lib; { + enable = mkEnableOption "MX Ergo configuration"; + }; + + config = lib.mkIf cfg.enable { + services.xserver = { + # This section must be *after* the one configured by `libinput` + # for the `ScrollMethod` configuration to not be overriden + inputClassSections = lib.mkAfter [ + '' + Identifier "MX Ergo scroll button configuration" + MatchProduct "MX Ergo" + MatchIsPointer "on" + Option "ScrollMethod" "button" + Option "ScrollButton" "9" + '' + ]; + }; + }; +}