Skip to content

Commit

Permalink
services.xserver.imwheel: add module
Browse files Browse the repository at this point in the history
  • Loading branch information
turboMaCk committed Dec 13, 2019
1 parent 2cbb259 commit 7406c0a
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 4 deletions.
1 change: 1 addition & 0 deletions nixos/modules/module-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
68 changes: 68 additions & 0 deletions nixos/modules/services/x11/imwheel.nix
Original file line number Diff line number Diff line change
@@ -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";
};
};
};
}
13 changes: 9 additions & 4 deletions pkgs/tools/X11/imwheel/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,15 @@ stdenv.mkDerivation rec {

buildInputs = [ libX11 libXext libXi libXmu libXt libXtst ];

postPatch = ''
substituteInPlace Makefile.in --replace "ETCDIR = " "ETCDIR = $out"
substituteInPlace util.c --replace "/etc/X11/imwheel" "$out/etc/X11/imwheel"
'';
makeFlags = [
"sysconfdir=/etc"
"ETCDIR=/etc"
];

installFlags = [
"sysconfdir=${placeholder "out"}/etc"
"ETCDIR=${placeholder "out"}/etc"
];

meta = with stdenv.lib; {
homepage = "http://imwheel.sourceforge.net/";
Expand Down

0 comments on commit 7406c0a

Please sign in to comment.