vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / prometheus / exporters / fastly.nix
blobe470ebe2eb5922aa7fa9e6cc1197bde4fd906f9f
2   config,
3   lib,
4   pkgs,
5   utils,
6   ...
7 }:
9 let
10   inherit (lib)
11     getExe
12     mkOption
13     optionals
14     types
15     ;
17   inherit (utils) escapeSystemdExecArgs;
19   cfg = config.services.prometheus.exporters.fastly;
22   port = 9118;
23   extraOpts = with types; {
24     configFile = mkOption {
25       type = nullOr path;
26       default = null;
27       example = "./fastly-exporter-config.txt";
28       description = ''
29         Path to a fastly-exporter configuration file.
30         Example one can be generated with `fastly-exporter --config-file-example`.
31       '';
32     };
34     tokenPath = mkOption {
35       type = path;
36       description = ''
37         A run-time path to the token file, which is supposed to be provisioned
38         outside of Nix store.
39       '';
40     };
41   };
42   serviceOpts = {
43     serviceConfig = {
44       LoadCredential = "fastly-api-token:${cfg.tokenPath}";
45       Environment = [ "FASTLY_API_TOKEN=%d/fastly-api-token" ];
46       ExecStart = escapeSystemdExecArgs (
47         [
48           (getExe pkgs.prometheus-fastly-exporter)
49           "-listen"
50           "${cfg.listenAddress}:${toString cfg.port}"
51         ]
52         ++ optionals (cfg.configFile != null) [
53           "--config-file"
54           cfg.configFile
55         ]
56         ++ cfg.extraFlags
57       );
58     };
59   };