1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 19:46:05 +01:00
home-manager/modules/services/unclutter.nix
Austin Horstman 86402a17b6 treewide: flatten single file modules
Some files don't need nesting and can be root level again to reduce
conflicts with other PRs.

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-06-23 16:20:26 -05:00

75 lines
1.6 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
mkOption
types
;
cfg = config.services.unclutter;
in
{
options.services.unclutter = {
enable = lib.mkEnableOption "unclutter";
package = lib.mkPackageOption pkgs "unclutter-xfixes" { };
timeout = mkOption {
description = "Number of seconds before the cursor is marked inactive.";
type = types.int;
default = 1;
};
threshold = mkOption {
description = "Minimum number of pixels considered cursor movement.";
type = types.int;
default = 1;
};
extraOptions = mkOption {
description = "More arguments to pass to the unclutter command.";
type = types.listOf types.str;
default = [ ];
example = [
"exclude-root"
"ignore-scrolling"
];
};
};
config = lib.mkIf cfg.enable {
assertions = [
(lib.hm.assertions.assertPlatform "services.unclutter" pkgs lib.platforms.linux)
];
systemd.user.services.unclutter = {
Unit = {
Description = "unclutter";
After = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
};
Service = {
ExecStart = ''
${cfg.package}/bin/unclutter \
--timeout ${toString cfg.timeout} \
--jitter ${toString (cfg.threshold - 1)} \
${lib.concatMapStrings (x: " --${x}") cfg.extraOptions}
'';
RestartSec = 3;
Restart = "always";
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
};
};
}