Riak have been updated a lot since the version 2.2 (now 3.0.10) but has seen no updated to the package. This is at this point a problem forcing us to maintain old versions of erlang. We would be happy to re accept a newer version of Riak if someone want to spend the time to set it up.main
parent
5cb04284cb
commit
fc658c86f7
@ -1,162 +0,0 @@ |
||||
{ config, lib, pkgs, ... }: |
||||
|
||||
with lib; |
||||
|
||||
let |
||||
|
||||
cfg = config.services.riak; |
||||
|
||||
in |
||||
|
||||
{ |
||||
|
||||
###### interface |
||||
|
||||
options = { |
||||
|
||||
services.riak = { |
||||
|
||||
enable = mkEnableOption "riak"; |
||||
|
||||
package = mkOption { |
||||
type = types.package; |
||||
default = pkgs.riak; |
||||
defaultText = literalExpression "pkgs.riak"; |
||||
description = '' |
||||
Riak package to use. |
||||
''; |
||||
}; |
||||
|
||||
nodeName = mkOption { |
||||
type = types.str; |
||||
default = "riak@127.0.0.1"; |
||||
description = '' |
||||
Name of the Erlang node. |
||||
''; |
||||
}; |
||||
|
||||
distributedCookie = mkOption { |
||||
type = types.str; |
||||
default = "riak"; |
||||
description = '' |
||||
Cookie for distributed node communication. All nodes in the |
||||
same cluster should use the same cookie or they will not be able to |
||||
communicate. |
||||
''; |
||||
}; |
||||
|
||||
dataDir = mkOption { |
||||
type = types.path; |
||||
default = "/var/db/riak"; |
||||
description = '' |
||||
Data directory for Riak. |
||||
''; |
||||
}; |
||||
|
||||
logDir = mkOption { |
||||
type = types.path; |
||||
default = "/var/log/riak"; |
||||
description = '' |
||||
Log directory for Riak. |
||||
''; |
||||
}; |
||||
|
||||
extraConfig = mkOption { |
||||
type = types.lines; |
||||
default = ""; |
||||
description = '' |
||||
Additional text to be appended to <filename>riak.conf</filename>. |
||||
''; |
||||
}; |
||||
|
||||
extraAdvancedConfig = mkOption { |
||||
type = types.lines; |
||||
default = ""; |
||||
description = '' |
||||
Additional text to be appended to <filename>advanced.config</filename>. |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
}; |
||||
|
||||
###### implementation |
||||
|
||||
config = mkIf cfg.enable { |
||||
|
||||
environment.systemPackages = [ cfg.package ]; |
||||
environment.etc."riak/riak.conf".text = '' |
||||
nodename = ${cfg.nodeName} |
||||
distributed_cookie = ${cfg.distributedCookie} |
||||
|
||||
platform_log_dir = ${cfg.logDir} |
||||
platform_etc_dir = /etc/riak |
||||
platform_data_dir = ${cfg.dataDir} |
||||
|
||||
${cfg.extraConfig} |
||||
''; |
||||
|
||||
environment.etc."riak/advanced.config".text = '' |
||||
${cfg.extraAdvancedConfig} |
||||
''; |
||||
|
||||
users.users.riak = { |
||||
name = "riak"; |
||||
uid = config.ids.uids.riak; |
||||
group = "riak"; |
||||
description = "Riak server user"; |
||||
}; |
||||
|
||||
users.groups.riak.gid = config.ids.gids.riak; |
||||
|
||||
systemd.services.riak = { |
||||
description = "Riak Server"; |
||||
|
||||
wantedBy = [ "multi-user.target" ]; |
||||
after = [ "network.target" ]; |
||||
|
||||
path = [ |
||||
pkgs.util-linux # for `logger` |
||||
pkgs.bash |
||||
]; |
||||
|
||||
environment.HOME = "${cfg.dataDir}"; |
||||
environment.RIAK_DATA_DIR = "${cfg.dataDir}"; |
||||
environment.RIAK_LOG_DIR = "${cfg.logDir}"; |
||||
environment.RIAK_ETC_DIR = "/etc/riak"; |
||||
|
||||
preStart = '' |
||||
if ! test -e ${cfg.logDir}; then |
||||
mkdir -m 0755 -p ${cfg.logDir} |
||||
chown -R riak ${cfg.logDir} |
||||
fi |
||||
|
||||
if ! test -e ${cfg.dataDir}; then |
||||
mkdir -m 0700 -p ${cfg.dataDir} |
||||
chown -R riak ${cfg.dataDir} |
||||
fi |
||||
''; |
||||
|
||||
serviceConfig = { |
||||
ExecStart = "${cfg.package}/bin/riak console"; |
||||
ExecStop = "${cfg.package}/bin/riak stop"; |
||||
StandardInput = "tty"; |
||||
User = "riak"; |
||||
Group = "riak"; |
||||
PermissionsStartOnly = true; |
||||
# Give Riak a decent amount of time to clean up. |
||||
TimeoutStopSec = 120; |
||||
LimitNOFILE = 65536; |
||||
}; |
||||
|
||||
unitConfig.RequiresMountsFor = [ |
||||
"${cfg.dataDir}" |
||||
"${cfg.logDir}" |
||||
"/etc/riak" |
||||
]; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
} |
@ -1,18 +0,0 @@ |
||||
import ./make-test-python.nix ({ lib, pkgs, ... }: { |
||||
name = "riak"; |
||||
meta = with lib.maintainers; { |
||||
maintainers = [ Br1ght0ne ]; |
||||
}; |
||||
|
||||
nodes.machine = { |
||||
services.riak.enable = true; |
||||
services.riak.package = pkgs.riak; |
||||
}; |
||||
|
||||
testScript = '' |
||||
machine.start() |
||||
|
||||
machine.wait_for_unit("riak") |
||||
machine.wait_until_succeeds("riak ping 2>&1") |
||||
''; |
||||
}) |
@ -1,106 +0,0 @@ |
||||
{ stdenv, lib, fetchurl, unzip, erlang, which, pam, nixosTests }: |
||||
|
||||
let |
||||
solrName = "solr-4.10.4-yz-2.tgz"; |
||||
yokozunaJarName = "yokozuna-3.jar"; |
||||
yzMonitorJarName = "yz_monitor-1.jar"; |
||||
|
||||
srcs = { |
||||
riak = fetchurl { |
||||
url = "https://s3.amazonaws.com/downloads.basho.com/riak/2.2/2.2.0/riak-2.2.0.tar.gz"; |
||||
sha256 = "0kl28bpyzajcllybili46jfr1schl45w5ysii187jr0ssgls2c9p"; |
||||
}; |
||||
solr = fetchurl { |
||||
url = "http://s3.amazonaws.com/files.basho.com/solr/${solrName}"; |
||||
sha256 = "0fy5slnldn628gmr2kilyx606ph0iykf7pz6j0xjcc3wqvrixa2a"; |
||||
}; |
||||
yokozunaJar = fetchurl { |
||||
url = "http://s3.amazonaws.com/files.basho.com/yokozuna/${yokozunaJarName}"; |
||||
sha256 = "17n6m100fz8affdcxsn4niw2lrpnswgfnd6aszgzipffwbg7v8v5"; |
||||
}; |
||||
yzMonitorJar = fetchurl { |
||||
url = "http://s3.amazonaws.com/files.basho.com/yokozuna/${yzMonitorJarName}"; |
||||
sha256 = "0kb97d1a43vw759j1h5qwbhx455pidn2pi7sfxijqic37h81ri1m"; |
||||
}; |
||||
}; |
||||
in |
||||
|
||||
stdenv.mkDerivation { |
||||
pname = "riak"; |
||||
version = "2.2.0"; |
||||
|
||||
nativeBuildInputs = [ unzip ]; |
||||
buildInputs = [ |
||||
which erlang pam |
||||
]; |
||||
|
||||
src = srcs.riak; |
||||
|
||||
hardeningDisable = [ "format" ]; |
||||
|
||||
postPatch = '' |
||||
sed -i deps/node_package/priv/base/env.sh \ |
||||
-e 's@{{platform_data_dir}}@''${RIAK_DATA_DIR:-/var/db/riak}@' \ |
||||
-e 's@^RUNNER_SCRIPT_DIR=.*@RUNNER_SCRIPT_DIR='$out'/bin@' \ |
||||
-e 's@^RUNNER_BASE_DIR=.*@RUNNER_BASE_DIR='$out'@' \ |
||||
-e 's@^RUNNER_ETC_DIR=.*@RUNNER_ETC_DIR=''${RIAK_ETC_DIR:-/etc/riak}@' \ |
||||
-e 's@^RUNNER_LOG_DIR=.*@RUNNER_LOG_DIR=''${RIAK_LOG_DIR:-/var/log}@' |
||||
''; |
||||
|
||||
preBuild = '' |
||||
mkdir solr-pkg |
||||
cp ${srcs.solr} solr-pkg/${solrName} |
||||
export SOLR_PKG_DIR=$(readlink -f solr-pkg) |
||||
|
||||
mkdir -p deps/yokozuna/priv/java_lib |
||||
cp ${srcs.yokozunaJar} deps/yokozuna/priv/java_lib/${yokozunaJarName} |
||||
|
||||
mkdir -p deps/yokozuna/priv/solr/lib/ext |
||||
cp ${srcs.yzMonitorJar} deps/yokozuna/priv/solr/lib/ext/${yzMonitorJarName} |
||||
|
||||
patchShebangs . |
||||
''; |
||||
|
||||
buildPhase = '' |
||||
runHook preBuild |
||||
|
||||
make locked-deps |
||||
make rel |
||||
|
||||
runHook postBuild |
||||
''; |
||||
|
||||
doCheck = false; |
||||
|
||||
installPhase = '' |
||||
runHook preInstall |
||||
|
||||
mkdir $out |
||||
mv rel/riak/etc rel/riak/riak-etc |
||||
mkdir -p rel/riak/etc |
||||
mv rel/riak/riak-etc rel/riak/etc/riak |
||||
mv rel/riak/* $out |
||||
|
||||
for prog in $out/bin/*; do |
||||
substituteInPlace $prog \ |
||||
--replace '. "`cd \`dirname $0\` && /bin/pwd`/../lib/env.sh"' \ |
||||
". $out/lib/env.sh" |
||||
done |
||||
|
||||
runHook postInstall |
||||
''; |
||||
|
||||
passthru.tests = { inherit (nixosTests) riak; }; |
||||
|
||||
meta = with lib; { |
||||
maintainers = with maintainers; [ cstrahan mdaiter ]; |
||||
description = "Dynamo inspired NoSQL DB by Basho"; |
||||
platforms = [ "x86_64-linux" ]; |
||||
sourceProvenance = with sourceTypes; [ |
||||
fromSource |
||||
binaryBytecode # dependencies |
||||
]; |
||||
license = licenses.asl20; |
||||
knownVulnerabilities = [ "CVE-2017-3163 - see https://github.com/NixOS/nixpkgs/issues/33876" ]; |
||||
}; |
||||
} |
Loading…
Reference in new issue