vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / monitoring / riemann-tools.nix
blob86a11694e7b49aadcd9519eaac6cc272e42a68a6
1 { config, pkgs, lib, ... }:
3 with pkgs;
4 with lib;
6 let
8   cfg = config.services.riemann-tools;
10   riemannHost = "${cfg.riemannHost}";
12   healthLauncher = writeScriptBin "riemann-health" ''
13     #!/bin/sh
14     exec ${pkgs.riemann-tools}/bin/riemann-health ${builtins.concatStringsSep " " cfg.extraArgs} --host ${riemannHost}
15   '';
18 in {
20   options = {
22     services.riemann-tools = {
23       enableHealth = mkOption {
24         type = types.bool;
25         default = false;
26         description = ''
27           Enable the riemann-health daemon.
28         '';
29       };
30       riemannHost = mkOption {
31         type = types.str;
32         default = "127.0.0.1";
33         description = ''
34           Address of the host riemann node. Defaults to localhost.
35         '';
36       };
37       extraArgs = mkOption {
38         type = types.listOf types.str;
39         default = [];
40         description = ''
41           A list of commandline-switches forwarded to a riemann-tool.
42           See for example `riemann-health --help` for available options.
43         '';
44         example = ["-p 5555" "--timeout=30" "--attribute=myattribute=42"];
45       };
46     };
47   };
49   config = mkIf cfg.enableHealth {
51     users.groups.riemanntools.gid = config.ids.gids.riemanntools;
53     users.users.riemanntools = {
54       description = "riemann-tools daemon user";
55       uid = config.ids.uids.riemanntools;
56       group = "riemanntools";
57     };
59     systemd.services.riemann-health = {
60       wantedBy = [ "multi-user.target" ];
61       path = [ procps ];
62       serviceConfig = {
63         User = "riemanntools";
64         ExecStart = "${healthLauncher}/bin/riemann-health";
65       };
66     };
68   };