tor-browser: fix desktop icon (#365780)
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / bird.nix
blob00b217e1fd2ab2661a152fe898cc5aa67a57f15a
2   config,
3   lib,
4   pkgs,
5   options,
6   ...
7 }:
9 let
10   cfg = config.services.prometheus.exporters.bird;
11   inherit (lib)
12     mkOption
13     types
14     concatStringsSep
15     singleton
16     ;
19   port = 9324;
20   extraOpts = {
21     birdVersion = mkOption {
22       type = types.enum [
23         1
24         2
25       ];
26       default = 2;
27       description = ''
28         Specifies whether BIRD1 or BIRD2 is in use.
29       '';
30     };
31     birdSocket = mkOption {
32       type = types.path;
33       default = "/run/bird/bird.ctl";
34       description = ''
35         Path to BIRD2 (or BIRD1 v4) socket.
36       '';
37     };
38     newMetricFormat = mkOption {
39       type = types.bool;
40       default = true;
41       description = ''
42         Enable the new more-generic metric format.
43       '';
44     };
45   };
46   serviceOpts = {
47     serviceConfig = {
48       SupplementaryGroups = singleton (if cfg.birdVersion == 1 then "bird" else "bird2");
49       ExecStart = ''
50         ${pkgs.prometheus-bird-exporter}/bin/bird_exporter \
51           -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
52           -bird.socket ${cfg.birdSocket} \
53           -bird.v2=${if cfg.birdVersion == 2 then "true" else "false"} \
54           -format.new=${if cfg.newMetricFormat then "true" else "false"} \
55           ${concatStringsSep " \\\n  " cfg.extraFlags}
56       '';
57       RestrictAddressFamilies = [
58         # Need AF_UNIX to collect data
59         "AF_UNIX"
60       ];
61     };
62   };