grafana-alloy: don't build the frontend twice
[NixPkgs.git] / nixos / modules / services / databases / opentsdb.nix
blob90268daec1d70bc1c8ac84db3dc82df1f13d0a9b
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.opentsdb;
5   configFile = pkgs.writeText "opentsdb.conf" cfg.config;
7 in {
9   ###### interface
11   options = {
13     services.opentsdb = {
15       enable = lib.mkEnableOption "OpenTSDB";
17       package = lib.mkPackageOption pkgs "opentsdb" { };
19       user = lib.mkOption {
20         type = lib.types.str;
21         default = "opentsdb";
22         description = ''
23           User account under which OpenTSDB runs.
24         '';
25       };
27       group = lib.mkOption {
28         type = lib.types.str;
29         default = "opentsdb";
30         description = ''
31           Group account under which OpenTSDB runs.
32         '';
33       };
35       port = lib.mkOption {
36         type = lib.types.port;
37         default = 4242;
38         description = ''
39           Which port OpenTSDB listens on.
40         '';
41       };
43       config = lib.mkOption {
44         type = lib.types.lines;
45         default = ''
46           tsd.core.auto_create_metrics = true
47           tsd.http.request.enable_chunked  = true
48         '';
49         description = ''
50           The contents of OpenTSDB's configuration file
51         '';
52       };
54     };
56   };
58   ###### implementation
60   config = lib.mkIf config.services.opentsdb.enable {
62     systemd.services.opentsdb = {
63       description = "OpenTSDB Server";
64       wantedBy = [ "multi-user.target" ];
65       requires = [ "hbase.service" ];
67       environment.JAVA_HOME = "${pkgs.jre}";
68       path = [ pkgs.gnuplot ];
70       preStart =
71         ''
72         COMPRESSION=NONE HBASE_HOME=${config.services.hbase.package} ${cfg.package}/share/opentsdb/tools/create_table.sh
73         '';
75       serviceConfig = {
76         PermissionsStartOnly = true;
77         User = cfg.user;
78         Group = cfg.group;
79         ExecStart = "${cfg.package}/bin/tsdb tsd --staticroot=${cfg.package}/share/opentsdb/static --cachedir=/tmp/opentsdb --port=${toString cfg.port} --config=${configFile}";
80       };
81     };
83     users.users.opentsdb = {
84       description = "OpenTSDB Server user";
85       group = "opentsdb";
86       uid = config.ids.uids.opentsdb;
87     };
89     users.groups.opentsdb.gid = config.ids.gids.opentsdb;
91   };