From 764cca613d24780b3799394561f5af9fa53da39c Mon Sep 17 00:00:00 2001 From: Oliver Charles Date: Thu, 20 Nov 2014 12:00:53 +0000 Subject: [PATCH] opentsdb: New package and NixOS module --- nixos/modules/misc/ids.nix | 2 + nixos/modules/module-list.nix | 1 + nixos/modules/services/databases/opentsdb.nix | 89 +++++++++++++++++++ pkgs/tools/misc/opentsdb/default.nix | 21 +++++ pkgs/top-level/all-packages.nix | 2 + 5 files changed, 115 insertions(+) create mode 100644 nixos/modules/services/databases/opentsdb.nix create mode 100644 pkgs/tools/misc/opentsdb/default.nix diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 6b192d4eeef..e3c3f465f1b 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -166,6 +166,7 @@ etcd = 156; docker-registry = 157; hbase = 158; + opentsdb = 159; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -286,6 +287,7 @@ riemann = 137; riemanndash = 138; hbase = 139; + opentsdb = 140; uhub = 142; mailpile = 146; redmine = 147; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index be07c4330f0..6e328339056 100755 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -116,6 +116,7 @@ ./services/databases/mysql.nix ./services/databases/neo4j.nix ./services/databases/openldap.nix + ./services/databases/opentsdb.nix ./services/databases/postgresql.nix ./services/databases/redis.nix ./services/databases/virtuoso.nix diff --git a/nixos/modules/services/databases/opentsdb.nix b/nixos/modules/services/databases/opentsdb.nix new file mode 100644 index 00000000000..93980dc7b12 --- /dev/null +++ b/nixos/modules/services/databases/opentsdb.nix @@ -0,0 +1,89 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.opentsdb; + +in { + + ###### interface + + options = { + + services.opentsdb = { + + enable = mkOption { + type = types.bool; + default = false; + description = '' + Whether to run OpenTSDB. + ''; + }; + + package = mkOption { + type = types.package; + default = pkgs.opentsdb; + example = literalExample "pkgs.opentsdb"; + description = '' + OpenTSDB package to use. + ''; + }; + + user = mkOption { + type = types.string; + default = "opentsdb"; + description = '' + User account under which OpenTSDB runs. + ''; + }; + + group = mkOption { + type = types.string; + default = "opentsdb"; + description = '' + Group account under which OpenTSDB runs. + ''; + }; + + port = mkOption { + type = types.int; + default = 4242; + description = '' + Which port OpenTSDB listens on. + ''; + }; + + }; + + }; + + ###### implementation + + config = mkIf config.services.opentsdb.enable { + + systemd.services.opentsdb = { + description = "OpenTSDB Server"; + wantedBy = [ "multi-user.target" ]; + requires = [ "hbase.service" ]; + + environment.JAVA_HOME = "${pkgs.jre}"; + + serviceConfig = { + PermissionsStartOnly = true; + User = cfg.user; + Group = cfg.group; + ExecStart = "${cfg.package}/bin/tsdb tsd --staticroot=${cfg.package}/share/opentsdb/static --cachedir=/tmp/opentsdb --port=${toString cfg.port}"; + }; + }; + + users.extraUsers.opentsdb = { + description = "OpenTSDB Server user"; + group = "opentsdb"; + uid = config.ids.uids.opentsdb; + }; + + users.extraGroups.opentsdb.gid = config.ids.gids.opentsdb; + + }; +} diff --git a/pkgs/tools/misc/opentsdb/default.nix b/pkgs/tools/misc/opentsdb/default.nix new file mode 100644 index 00000000000..b1d02233046 --- /dev/null +++ b/pkgs/tools/misc/opentsdb/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, curl, jdk, jre, makeWrapper, nettools, python }: +with stdenv.lib; +stdenv.mkDerivation rec { + name = "opentsdb-2.0.1"; + + src = fetchurl { + url = https://github.com/OpenTSDB/opentsdb/releases/download/v2.0.1/opentsdb-2.0.1.tar.gz; + sha256 = "1q2gkl72yjzd8yrggl0018m9s8mc9zwnz3d8ias54vqh3irypc2c"; + }; + + buildPhase = "find ."; + + buildInputs = [ curl jdk makeWrapper nettools python ]; + + installPhase = '' + make install + wrapProgram $out/bin/tsdb \ + --set JAVA_HOME "${jre}" \ + --set JAVA "${jre}/bin/java" + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5a2236712a3..c3ee0c1fcb6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12801,6 +12801,8 @@ let youtubeDL = youtube-dl; # added 2014-10-26 rdiff_backup = rdiff-backup; # added 2014-11-23 + opentsdb = callPackage ../tools/misc/opentsdb {}; + hbase = callPackage ../servers/hbase {}; }; in self; in pkgs