@@ -0,0 +1,58 @@
1+{ config, lib, pkgs, ... }:
2+
3+with lib;
4+
5+let cfg = config.services.tp-auto-kbbl;
6+
7+in {
8+ meta.maintainers = with maintainers; [ sebtm ];
9+
10+ options = {
11+ services.tp-auto-kbbl = {
12+ enable = mkEnableOption "Auto toggle keyboard back-lighting on Thinkpads (and maybe other laptops) for Linux";
13+
14+ package = mkOption {
15+ type = types.package;
16+ default = pkgs.tp-auto-kbbl;
17+ defaultText = literalExample "pkgs.tp-auto-kbbl";
18+ description = "Package providing <command>tp-auto-kbbl</command>.";
19+ };
20+
21+ arguments = mkOption {
22+ type = types.listOf types.str;
23+ default = [ ];
24+ description = ''
25+ List of arguments appended to <literal>./tp-auto-kbbl --device [device] [arguments]</literal>
26+ '';
27+ };
28+
29+ device = mkOption {
30+ type = types.str;
31+ default = "/dev/input/event0";
32+ description = "Device watched for activities.";
33+ };
34+
35+ };
36+ };
37+
38+ config = mkIf cfg.enable {
39+ environment.systemPackages = [ cfg.package ];
40+
41+ systemd.services.tp-auto-kbbl = {
42+ serviceConfig = {
43+ ExecStart = concatStringsSep " "
44+ ([ "${cfg.package}/bin/tp-auto-kbbl" "--device ${cfg.device}" ] ++ cfg.arguments);
45+ Restart = "always";
46+ Type = "simple";
47+ };
48+
49+ unitConfig = {
50+ Description = "Auto toggle keyboard backlight";
51+ Documentation = "https://github.com/saibotd/tp-auto-kbbl";
52+ After = [ "dbus.service" ];
53+ };
54+
55+ wantedBy = [ "multi-user.target" ];
56+ };
57+ };
58+}