From 1899cb0f36b7db56ec57e43a69d126eab576f751 Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:52:16 +0100 Subject: [PATCH] nixos/mouse-actions: add user service, allow different package --- nixos/modules/programs/mouse-actions.nix | 40 +++++++++++++++++++----- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/nixos/modules/programs/mouse-actions.nix b/nixos/modules/programs/mouse-actions.nix index 73dc783e3100..297cc4d3bfe7 100644 --- a/nixos/modules/programs/mouse-actions.nix +++ b/nixos/modules/programs/mouse-actions.nix @@ -3,13 +3,39 @@ let cfg = config.programs.mouse-actions; in - { - options.programs.mouse-actions = { - enable = lib.mkEnableOption '' - mouse-actions udev rules. This is a prerequisite for using mouse-actions without being root +{ + options.programs.mouse-actions = { + enable = lib.mkEnableOption "" // { + description = '' + Whether to install and set up mouse-actions and it's udev rules. + + Note that only users in the "uinput" group will be able to use the package ''; }; - config = lib.mkIf cfg.enable { - services.udev.packages = [ pkgs.mouse-actions ]; + package = lib.mkPackageOption pkgs "mouse-actions" { + example = "mouse-actions-gui"; }; - } + autorun = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to start a user service to run mouse-actions on startup. + ''; + }; + }; + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + services.udev.packages = [ cfg.package ]; + systemd.user.services.mouse-actions = lib.mkIf cfg.autorun { + description = "mouse-actions launcher"; + wantedBy = [ "graphical-session.target" ]; + bindsTo = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + environment.PATH = lib.mkForce null; # don't use the default PATH provided by NixOS + serviceConfig = { + ExecStart = "${lib.getExe cfg.package} start"; + PassEnvironment = "PATH"; # inherit PATH from user environment + }; + }; + }; +}