vuls: init at 0.27.0 (#348530)
[NixPkgs.git] / nixos / modules / services / monitoring / grafana-reporter.nix
blob528041cab37aff94ea80d364d7b393b7a9c5c8da
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   cfg = config.services.grafana_reporter;
8 in {
9   options.services.grafana_reporter = {
10     enable = mkEnableOption "grafana_reporter";
12     grafana = {
13       protocol = mkOption {
14         description = "Grafana protocol.";
15         default = "http";
16         type = types.enum ["http" "https"];
17       };
18       addr = mkOption {
19         description = "Grafana address.";
20         default = "127.0.0.1";
21         type = types.str;
22       };
23       port = mkOption {
24         description = "Grafana port.";
25         default = 3000;
26         type = types.port;
27       };
29     };
30     addr = mkOption {
31       description = "Listening address.";
32       default = "127.0.0.1";
33       type = types.str;
34     };
36     port = mkOption {
37       description = "Listening port.";
38       default = 8686;
39       type = types.port;
40     };
42     templateDir = mkOption {
43       description = "Optional template directory to use custom tex templates";
44       default = pkgs.grafana_reporter;
45       defaultText = literalExpression "pkgs.grafana_reporter";
46       type = types.either types.str types.path;
47     };
48   };
50   config = mkIf cfg.enable {
51     systemd.services.grafana_reporter = {
52       description = "Grafana Reporter Service Daemon";
53       wantedBy = ["multi-user.target"];
54       after = ["network.target"];
55       serviceConfig = let
56         args = lib.concatStringsSep " " [
57           "-proto ${cfg.grafana.protocol}://"
58           "-ip ${cfg.grafana.addr}:${toString cfg.grafana.port}"
59           "-port :${toString cfg.port}"
60           "-templates ${cfg.templateDir}"
61         ];
62       in {
63         ExecStart = "${pkgs.grafana-reporter}/bin/grafana-reporter ${args}";
64       };
65     };
66   };