grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / hardware / iptsd.nix
blobbfd4b35227923deefda4803ba88e7c7279664336
1 { config, lib, pkgs, ... }:
3 let
4   cfg = config.services.iptsd;
5   format = pkgs.formats.ini { };
6   configFile = format.generate "iptsd.conf" cfg.config;
7 in {
8   options.services.iptsd = {
9     enable = lib.mkEnableOption "the userspace daemon for Intel Precise Touch & Stylus";
11     config = lib.mkOption {
12       default = { };
13       description = ''
14         Configuration for IPTSD. See the
15         [reference configuration](https://github.com/linux-surface/iptsd/blob/master/etc/iptsd.conf)
16         for available options and defaults.
17       '';
18       type = lib.types.submodule {
19         freeformType = format.type;
20         options = {
21           Touchscreen = {
22             DisableOnPalm = lib.mkOption {
23               default = false;
24               description = "Ignore all touchscreen inputs if a palm was registered on the display.";
25               type = lib.types.bool;
26             };
27             DisableOnStylus = lib.mkOption {
28               default = false;
29               description = "Ignore all touchscreen inputs if a stylus is in proximity.";
30               type = lib.types.bool;
31             };
32           };
33           Stylus = {
34             Disable = lib.mkOption {
35               default = false;
36               description = "Disables the stylus. No stylus data will be processed.";
37               type = lib.types.bool;
38             };
39           };
40         };
41       };
42     };
43   };
45   config = lib.mkIf cfg.enable {
46     warnings = lib.optional (lib.hasAttr "Touch" cfg.config) ''
47       The option `services.iptsd.config.Touch` has been renamed to `services.iptsd.config.Touchscreen`.
48     '';
50     systemd.packages = [ pkgs.iptsd ];
51     environment.etc."iptsd.conf".source = configFile;
52     systemd.services."iptsd@".restartTriggers = [ configFile ];
53     services.udev.packages = [ pkgs.iptsd ];
54   };
56   meta.maintainers = with lib.maintainers; [ dotlambda ];