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