at 24.11-pre 1.6 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 = '' 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 = '' 25 Blacklist of kernel modules known to conflict with OpenTabletDriver. 26 ''; 27 }; 28 29 package = mkPackageOption pkgs "opentabletdriver" { }; 30 31 daemon = { 32 enable = mkOption { 33 default = true; 34 type = types.bool; 35 description = '' 36 Whether to start OpenTabletDriver daemon as a systemd user service. 37 ''; 38 }; 39 }; 40 }; 41 }; 42 43 config = mkIf cfg.enable { 44 environment.systemPackages = [ cfg.package ]; 45 46 services.udev.packages = [ cfg.package ]; 47 48 boot.blacklistedKernelModules = cfg.blacklistedKernelModules; 49 50 systemd.user.services.opentabletdriver = with pkgs; mkIf cfg.daemon.enable { 51 description = "Open source, cross-platform, user-mode tablet driver"; 52 wantedBy = [ "graphical-session.target" ]; 53 partOf = [ "graphical-session.target" ]; 54 55 serviceConfig = { 56 Type = "simple"; 57 ExecStart = "${cfg.package}/bin/otd-daemon"; 58 Restart = "on-failure"; 59 }; 60 }; 61 }; 62}