diff options
author | Silvan Mosberger <contact@infinisil.com> | 2019-12-13 19:37:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-13 19:37:59 +0100 |
commit | 89eccbf98572fb4a35869f1afc4a8213b91a740c (patch) | |
tree | 1702df14e039a377da526ddc2f5b75487582fe5c /nixos | |
parent | c644c7578df9623a0589f19eb55331655b209c27 (diff) | |
parent | 7406c0af9820b0734ad13421a8033fb9458c110b (diff) | |
download | nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar.gz nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar.bz2 nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar.lz nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar.xz nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.tar.zst nixpkgs-89eccbf98572fb4a35869f1afc4a8213b91a740c.zip |
Merge pull request #71052 from turboMaCk/imwheel-service
services.xserver.imwheel: add module
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/x11/imwheel.nix | 68 |
2 files changed, 69 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index bb217d873bb..e577ea9ab05 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -866,6 +866,7 @@ ./services/x11/hardware/digimend.nix ./services/x11/hardware/cmt.nix ./services/x11/gdk-pixbuf.nix + ./services/x11/imwheel.nix ./services/x11/redshift.nix ./services/x11/urxvtd.nix ./services/x11/window-managers/awesome.nix diff --git a/nixos/modules/services/x11/imwheel.nix b/nixos/modules/services/x11/imwheel.nix new file mode 100644 index 00000000000..871f8851a7e --- /dev/null +++ b/nixos/modules/services/x11/imwheel.nix @@ -0,0 +1,68 @@ +{ config, lib, pkgs, ... }: +with lib; +let + cfg = config.services.xserver.imwheel; +in + { + options = { + services.xserver.imwheel = { + enable = mkEnableOption "IMWheel service"; + + extraOptions = mkOption { + type = types.listOf types.str; + default = [ "--buttons 45" ]; + example = [ "--debug" ]; + description = '' + Additional command-line arguments to pass to + <command>imwheel</command>. + ''; + }; + + rules = mkOption { + type = types.attrsOf types.str; + default = {}; + example = literalExample '' + ".*" = ''' + None, Up, Button4, 8 + None, Down, Button5, 8 + Shift_L, Up, Shift_L|Button4, 4 + Shift_L, Down, Shift_L|Button5, 4 + Control_L, Up, Control_L|Button4 + Control_L, Down, Control_L|Button5 + '''; + ''; + description = '' + Window class translation rules. + /etc/X11/imwheelrc is generated based on this config + which means this config is global for all users. + See <link xlink:href="http://imwheel.sourceforge.net/imwheel.1.html">offical man pages</link> + for more informations. + ''; + }; + }; + }; + + config = mkIf cfg.enable { + environment.systemPackages = [ pkgs.imwheel ]; + + environment.etc."X11/imwheel/imwheelrc".source = + pkgs.writeText "imwheelrc" (concatStringsSep "\n\n" + (mapAttrsToList + (rule: conf: "\"${rule}\"\n${conf}") cfg.rules + )); + + systemd.user.services.imwheel = { + description = "imwheel service"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.imwheel}/bin/imwheel " + escapeShellArgs ([ + "--detach" + "--kill" + ] ++ cfg.extraOptions); + ExecStop = "${pkgs.procps}/bin/pkill imwheel"; + Restart = "on-failure"; + }; + }; + }; + } |