From bdb94e30e42f67528ec759826a980eea66724267 Mon Sep 17 00:00:00 2001 From: wxlyyy <1556588440@qq.com> Date: Sun, 19 Apr 2026 23:47:14 +0800 Subject: [PATCH] nixos/logiops: init --- .../manual/release-notes/rl-2605.section.md | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/services/hardware/logiops.nix | 61 +++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 nixos/modules/services/hardware/logiops.nix diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 911eb063af97..314ff58d9eb3 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -132,6 +132,8 @@ - [porxie](https://codeberg.org/Blooym/porxie), a correct and efficient ATProto blob proxy for secure content delivery. Available as [services.porxie](#opt-services.porxie.enable). +- [LogiOps](https://github.com/PixlOne/logiops), a unofficial userspace driver for HID++ Logitech devices. Available as [services.logiops](#opt-services.logiops.enable). + ## Backward Incompatibilities {#sec-release-26.05-incompatibilities} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 774140f86d92..ccee5a02bc7a 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -686,6 +686,7 @@ ./services/hardware/lcd.nix ./services/hardware/libinput.nix ./services/hardware/lirc.nix + ./services/hardware/logiops.nix ./services/hardware/monado.nix ./services/hardware/nvidia-container-toolkit ./services/hardware/nvidia-optimus.nix diff --git a/nixos/modules/services/hardware/logiops.nix b/nixos/modules/services/hardware/logiops.nix new file mode 100644 index 000000000000..807d169ac6fc --- /dev/null +++ b/nixos/modules/services/hardware/logiops.nix @@ -0,0 +1,61 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.services.logiops; + configFormat = pkgs.formats.libconfig { }; + configFile = configFormat.generate "logid.cfg" cfg.config; +in +{ + options = { + services.logiops = { + enable = lib.mkEnableOption "LogiOps, a unofficial userspace driver for HID++ Logitech devices"; + + package = lib.mkPackageOption pkgs "logiops" { }; + + config = lib.mkOption { + type = configFormat.type; + default = { }; + example = lib.literalExpression '' + devices = [ + { + name = "Wireless Mouse MX Master"; + dpi = 1000; + smartshift = + { + on = true; + threshold = 30; + torque = 50; + }; + } + ]; + ''; + description = '' + The standard libconfig-style config for LogiOps. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + services.dbus.packages = [ cfg.package ]; + + systemd = { + packages = [ cfg.package ]; + services.logid = { + wantedBy = [ "graphical.target" ]; + serviceConfig.ExecStart = [ + "" + "${lib.getExe cfg.package} -c ${configFile}" + ]; + }; + }; + }; + + meta.maintainers = with lib.maintainers; [ bokicoder ]; +}