anyrun: 0-unstable-2024-11-08 -> 0-unstable-2024-12-27 (#369731)
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / py-air-control.nix
blob773506195001a502ca04528c649ee59a6483e259
2   config,
3   lib,
4   pkgs,
5   options,
6   ...
7 }:
9 let
10   cfg = config.services.prometheus.exporters.py-air-control;
11   inherit (lib) mkOption types;
13   workingDir = "/var/lib/${cfg.stateDir}";
17   port = 9896;
18   extraOpts = {
19     deviceHostname = mkOption {
20       type = types.str;
21       example = "192.168.1.123";
22       description = ''
23         The hostname of the air purification device from which to scrape the metrics.
24       '';
25     };
26     protocol = mkOption {
27       type = types.str;
28       default = "http";
29       description = ''
30         The protocol to use when communicating with the air purification device.
31         Available: [http, coap, plain_coap]
32       '';
33     };
34     stateDir = mkOption {
35       type = types.str;
36       default = "prometheus-py-air-control-exporter";
37       description = ''
38         Directory below `/var/lib` to store runtime data.
39         This directory will be created automatically using systemd's StateDirectory mechanism.
40       '';
41     };
42   };
43   serviceOpts = {
44     serviceConfig = {
45       DynamicUser = false;
46       StateDirectory = cfg.stateDir;
47       WorkingDirectory = workingDir;
48       ExecStart = ''
49         ${pkgs.python3Packages.py-air-control-exporter}/bin/py-air-control-exporter \
50           --host ${cfg.deviceHostname} \
51           --protocol ${cfg.protocol} \
52           --listen-port ${toString cfg.port} \
53           --listen-address ${cfg.listenAddress}
54       '';
55       Environment = [ "HOME=${workingDir}" ];
56     };
57   };