vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / kea.nix
blobd0f2eb6b8a3c0c3794dde97e3c938bcd219227b2
1 { config
2 , lib
3 , pkgs
4 , utils
5 , ...
6 }:
8 let
9   cfg = config.services.prometheus.exporters.kea;
10   inherit (lib)
11     mkOption
12     types
13     mkRenamedOptionModule
14     literalExpression
15     ;
16 in {
17   imports = [
18     (mkRenamedOptionModule [ "controlSocketPaths" ] [ "targets" ])
19   ];
20   port = 9547;
21   extraOpts = {
22     targets = mkOption {
23       type = types.listOf types.str;
24       example = literalExpression ''
25         [
26           "/run/kea/kea-dhcp4.socket"
27           "/run/kea/kea-dhcp6.socket"
28           "http://127.0.0.1:8547"
29         ]
30       '';
31       description = ''
32         Paths or URLs to the Kea control socket.
33       '';
34     };
35   };
36   serviceOpts = {
37     after = [
38       "kea-dhcp4-server.service"
39       "kea-dhcp6-server.service"
40     ];
41     serviceConfig = {
42       User = "kea";
43       DynamicUser = true;
44       ExecStart = utils.escapeSystemdExecArgs ([
45         (lib.getExe pkgs.prometheus-kea-exporter)
46         "--address" cfg.listenAddress
47         "--port" cfg.port
48       ] ++ cfg.extraFlags ++ cfg.targets);
49       RuntimeDirectory = "kea";
50       RuntimeDirectoryPreserve = true;
51       RestrictAddressFamilies = [
52         # Need AF_UNIX to collect data
53         "AF_UNIX"
54       ];
55     };
56   };