at 23.11-pre 1.9 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4let 5 cfg = config.hardware.opentabletdriver; 6in 7{ 8 meta.maintainers = with lib.maintainers; [ thiagokokada ]; 9 10 options = { 11 hardware.opentabletdriver = { 12 enable = mkOption { 13 default = false; 14 type = types.bool; 15 description = lib.mdDoc '' 16 Enable OpenTabletDriver udev rules, user service and blacklist kernel 17 modules known to conflict with OpenTabletDriver. 18 ''; 19 }; 20 21 blacklistedKernelModules = mkOption { 22 type = types.listOf types.str; 23 default = [ "hid-uclogic" "wacom" ]; 24 description = lib.mdDoc '' 25 Blacklist of kernel modules known to conflict with OpenTabletDriver. 26 ''; 27 }; 28 29 package = mkOption { 30 type = types.package; 31 default = pkgs.opentabletdriver; 32 defaultText = literalExpression "pkgs.opentabletdriver"; 33 description = lib.mdDoc '' 34 OpenTabletDriver derivation to use. 35 ''; 36 }; 37 38 daemon = { 39 enable = mkOption { 40 default = true; 41 type = types.bool; 42 description = lib.mdDoc '' 43 Whether to start OpenTabletDriver daemon as a systemd user service. 44 ''; 45 }; 46 }; 47 }; 48 }; 49 50 config = mkIf cfg.enable { 51 environment.systemPackages = [ cfg.package ]; 52 53 services.udev.packages = [ cfg.package ]; 54 55 boot.blacklistedKernelModules = cfg.blacklistedKernelModules; 56 57 systemd.user.services.opentabletdriver = with pkgs; mkIf cfg.daemon.enable { 58 description = "Open source, cross-platform, user-mode tablet driver"; 59 wantedBy = [ "graphical-session.target" ]; 60 partOf = [ "graphical-session.target" ]; 61 62 serviceConfig = { 63 Type = "simple"; 64 ExecStart = "${cfg.package}/bin/otd-daemon"; 65 Restart = "on-failure"; 66 }; 67 }; 68 }; 69}