vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / unifi.nix
blob07d177251f40deafde1e2d55408ff7e274868aa8
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.unifi;
5   inherit (lib)
6     mkOption
7     types
8     escapeShellArg
9     optionalString
10     concatStringsSep
11     ;
14   port = 9130;
15   extraOpts = {
16     unifiAddress = mkOption {
17       type = types.str;
18       example = "https://10.0.0.1:8443";
19       description = ''
20         URL of the UniFi Controller API.
21       '';
22     };
24     unifiInsecure = mkOption {
25       type = types.bool;
26       default = false;
27       description = ''
28         If enabled skip the verification of the TLS certificate of the UniFi Controller API.
29         Use with caution.
30       '';
31     };
33     unifiUsername = mkOption {
34       type = types.str;
35       example = "ReadOnlyUser";
36       description = ''
37         username for authentication against UniFi Controller API.
38       '';
39     };
41     unifiPassword = mkOption {
42       type = types.str;
43       description = ''
44         Password for authentication against UniFi Controller API.
45       '';
46     };
48     unifiTimeout = mkOption {
49       type = types.str;
50       default = "5s";
51       example = "2m";
52       description = ''
53         Timeout including unit for UniFi Controller API requests.
54       '';
55     };
56   };
57   serviceOpts = {
58     serviceConfig = {
59       ExecStart = ''
60         ${pkgs.prometheus-unifi-exporter}/bin/unifi_exporter \
61           -telemetry.addr ${cfg.listenAddress}:${toString cfg.port} \
62           -unifi.addr ${cfg.unifiAddress} \
63           -unifi.username ${escapeShellArg cfg.unifiUsername} \
64           -unifi.password ${escapeShellArg cfg.unifiPassword} \
65           -unifi.timeout ${cfg.unifiTimeout} \
66           ${optionalString cfg.unifiInsecure "-unifi.insecure" } \
67           ${concatStringsSep " \\\n  " cfg.extraFlags}
68       '';
69     };
70   };