vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / hardware / opentabletdriver.nix
blob993d51d8798685f14a35837f097af9f9d6ebc4d3
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.hardware.opentabletdriver;
4 in
6   meta.maintainers = with lib.maintainers; [ thiagokokada ];
8   options = {
9     hardware.opentabletdriver = {
10       enable = lib.mkOption {
11         default = false;
12         type = lib.types.bool;
13         description = ''
14           Enable OpenTabletDriver udev rules, user service and blacklist kernel
15           modules known to conflict with OpenTabletDriver.
16         '';
17       };
19       blacklistedKernelModules = lib.mkOption {
20         type = lib.types.listOf lib.types.str;
21         default = [ "hid-uclogic" "wacom" ];
22         description = ''
23           Blacklist of kernel modules known to conflict with OpenTabletDriver.
24         '';
25       };
27       package = lib.mkPackageOption pkgs "opentabletdriver" { };
29       daemon = {
30         enable = lib.mkOption {
31           default = true;
32           type = lib.types.bool;
33           description = ''
34             Whether to start OpenTabletDriver daemon as a systemd user service.
35           '';
36         };
37       };
38     };
39   };
41   config = lib.mkIf cfg.enable {
42     environment.systemPackages = [ cfg.package ];
44     services.udev.packages = [ cfg.package ];
46     boot.blacklistedKernelModules = cfg.blacklistedKernelModules;
48     systemd.user.services.opentabletdriver = with pkgs; lib.mkIf cfg.daemon.enable {
49       description = "Open source, cross-platform, user-mode tablet driver";
50       wantedBy = [ "graphical-session.target" ];
51       partOf = [ "graphical-session.target" ];
53       serviceConfig = {
54         Type = "simple";
55         ExecStart = "${cfg.package}/bin/otd-daemon";
56         Restart = "on-failure";
57       };
58     };
59   };