parent
4c1d65130f
commit
8964667bcd
@ -0,0 +1,102 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
cfg = config.services.hbase; |
||||
|
||||
in { |
||||
|
||||
###### interface |
||||
|
||||
options = { |
||||
|
||||
services.hbase = { |
||||
|
||||
enable = mkOption { |
||||
type = types.bool; |
||||
default = false; |
||||
description = '' |
||||
Whether to run HBase. |
||||
''; |
||||
}; |
||||
|
||||
package = mkOption { |
||||
type = types.package; |
||||
default = pkgs.hbase; |
||||
example = literalExample "pkgs.hbase"; |
||||
description = '' |
||||
HBase package to use. |
||||
''; |
||||
}; |
||||
|
||||
|
||||
user = mkOption { |
||||
type = types.string; |
||||
default = "hbase"; |
||||
description = '' |
||||
User account under which HBase runs. |
||||
''; |
||||
}; |
||||
|
||||
group = mkOption { |
||||
type = types.string; |
||||
default = "hbase"; |
||||
description = '' |
||||
Group account under which HBase runs. |
||||
''; |
||||
}; |
||||
|
||||
dataDir = mkOption { |
||||
type = types.path; |
||||
default = "/var/lib/hbase"; |
||||
description = '' |
||||
Specifies location of HBase database files. This location should be |
||||
writable and readable for the user the HBase service runs as |
||||
(hbase by default). |
||||
''; |
||||
}; |
||||
|
||||
logDir = mkOption { |
||||
type = types.path; |
||||
default = "/var/log/hbase"; |
||||
description = '' |
||||
Specifies the location of HBase log files. |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
}; |
||||
|
||||
###### implementation |
||||
|
||||
config = mkIf config.services.hbase.enable { |
||||
|
||||
systemd.services.hbase = { |
||||
description = "HBase Server"; |
||||
wantedBy = [ "multi-user.target" ]; |
||||
|
||||
environment = { |
||||
JAVA_HOME = "${pkgs.jre}"; |
||||
HBASE_LOG_DIR = cfg.logDir; |
||||
}; |
||||
|
||||
serviceConfig = { |
||||
PermissionsStartOnly = true; |
||||
User = cfg.user; |
||||
Group = cfg.group; |
||||
ExecStart = "${cfg.package}/bin/hbase master start"; |
||||
}; |
||||
}; |
||||
|
||||
users.extraUsers.hbase = { |
||||
description = "HBase Server user"; |
||||
group = "hbase"; |
||||
uid = config.ids.uids.hbase; |
||||
}; |
||||
|
||||
users.extraGroups.hbase.gid = config.ids.gids.hbase; |
||||
|
||||
}; |
||||
} |
@ -0,0 +1,13 @@ |
||||
{ stdenv, fetchurl, jre, makeWrapper }: |
||||
stdenv.mkDerivation { |
||||
name = "hbase-0.98.8"; |
||||
src = fetchurl { |
||||
url = http://mirror.gopotato.co.uk/apache/hbase/stable/hbase-0.98.8-hadoop2-bin.tar.gz; |
||||
sha256 = "0nvxaqpw8v2hg6mn2p2zxj3y6r4dj4xzxmp8rfmv6m6algn5apv6"; |
||||
}; |
||||
buildInputs = [ makeWrapper ]; |
||||
installPhase = '' |
||||
mkdir -p $out |
||||
cp -R * $out |
||||
''; |
||||
} |
Loading…
Reference in new issue