vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / pihole.nix
blob30b260dc3792a18acf014134ed79ec7842b98214
1 { config, lib, pkgs, options, ... }:
3 let
4   cfg = config.services.prometheus.exporters.pihole;
5   inherit (lib)
6     mkOption
7     types
8     mkRemovedOptionModule
9     optionalString
10     ;
13   imports = [
14     (mkRemovedOptionModule [ "interval"] "This option has been removed.")
15     ({ options.warnings = options.warnings; options.assertions = options.assertions; })
16   ];
18   port = 9617;
19   extraOpts = {
20     apiToken = mkOption {
21       type = types.str;
22       default = "";
23       example = "580a770cb40511eb85290242ac130003580a770cb40511eb85290242ac130003";
24       description = ''
25         Pi-Hole API token which can be used instead of a password
26       '';
27     };
28     password = mkOption {
29       type = types.str;
30       default = "";
31       example = "password";
32       description = ''
33         The password to login into Pi-Hole. An api token can be used instead.
34       '';
35     };
36     piholeHostname = mkOption {
37       type = types.str;
38       default = "pihole";
39       example = "127.0.0.1";
40       description = ''
41         Hostname or address where to find the Pi-Hole webinterface
42       '';
43     };
44     piholePort = mkOption {
45       type = types.port;
46       default = 80;
47       example = 443;
48       description = ''
49         The port Pi-Hole webinterface is reachable on
50       '';
51     };
52     protocol = mkOption {
53       type = types.enum [ "http" "https" ];
54       default = "http";
55       example = "https";
56       description = ''
57         The protocol which is used to connect to Pi-Hole
58       '';
59     };
60     timeout = mkOption {
61       type = types.str;
62       default = "5s";
63       description = ''
64         Controls the timeout to connect to a Pi-Hole instance
65       '';
66     };
67   };
68   serviceOpts = {
69     serviceConfig = {
70       ExecStart = ''
71         ${pkgs.prometheus-pihole-exporter}/bin/pihole-exporter \
72           ${optionalString (cfg.apiToken != "") "-pihole_api_token ${cfg.apiToken}"} \
73           -pihole_hostname ${cfg.piholeHostname} \
74           ${optionalString (cfg.password != "") "-pihole_password ${cfg.password}"} \
75           -pihole_port ${toString cfg.piholePort} \
76           -pihole_protocol ${cfg.protocol} \
77           -port ${toString cfg.port} \
78           -timeout ${cfg.timeout}
79       '';
80     };
81   };