Skip to content

Instantly share code, notes, and snippets.

@datakurre
Last active January 4, 2016 12:22
Show Gist options
  • Save datakurre/310bd688d2962edf9fe3 to your computer and use it in GitHub Desktop.
Save datakurre/310bd688d2962edf9fe3 to your computer and use it in GitHub Desktop.
Nix shell for RabbitMQ under $PWD with metronome plugin
with import <nixpkgs> {};
let dependencies = rec {
_rabbitmq_plugins = stdenv.mkDerivation rec {
name = "rabbitmq-plugins-${version}";
version = rabbitmq_server.version;
buildInputs = [ git python libxslt mercurial erlangR16 zip unzip ];
unpackPhase = "";
builder = builtins.toFile "builder.sh" ''
source $stdenv/setup
git clone https://github.com/rabbitmq/rabbitmq-public-umbrella
cd rabbitmq-public-umbrella
git checkout rabbitmq_v`echo $version|sed -e 's/\./_/g'`
make co
make BRANCH=rabbitmq_v`echo $version|sed -e 's/\./_/g'` up_c
rm -rf rabbitmq-amqp1.0 # BUILD BROKEN
PLUGINS_DIST_DIR=$out make plugins-dist
make -C rabbitmq-metronome dist
cp rabbitmq-metronome/dist/*.ez $out
'';
SSL_CERT_FILE = "${cacert}/etc/ssl/certs/ca-bundle.crt";
};
_rabbitmq_config = builtins.toFile "rabbitmq.config" ''[
{rabbit, [
{vm_memory_high_watermark, 0.5},
{disk_free_limit, 100000000}
]},
{rabbitmq_management, [
{load_definitions, "${_rabbitmq_json}"}
]}
].'';
_enabled_plugins = builtins.toFile "enabled_plugins" "[
rabbitmq_management,rabbitmq_metronome
].";
_rabbitmq_json = builtins.toFile "rabbitmq.json" ''{
"users": [{
"tags": "administrator",
"name": "guest",
"password": "guest"
}],
"vhosts": [
{"name": "/"}
],
"permissions": [{
"write": ".*",
"vhost": "/",
"read": ".*",
"user": "guest",
"configure": ".*"
}]
}'';
};
in with dependencies;
stdenv.mkDerivation {
name = "env";
buildInputs = [
(rabbitmq_server.override { erlang = erlangR16; })
];
shellHook = ''
export SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
mkdir -p .rabbitmq_server
mkdir -p .rabbitmq_server/mnesia
export RABBITMQ_LOG_BASE=`pwd`/.rabbitmq_server
export RABBITMQ_MNESIA_BASE=`pwd`/.rabbitmq_server/mnesia
export RABBITMQ_PLUGINS_DIR=${_rabbitmq_plugins}
export RABBITMQ_ENABLED_PLUGINS_FILE=${_enabled_plugins}
export RABBITMQ_CONFIG_FILE=`echo ${_rabbitmq_config}|sed "s/.config//"`
'';
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment