diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-07-28 11:30:31 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-07-28 11:30:49 +0200 |
commit | f64d84698eb3f4d833e846336ff99a73331c31f7 (patch) | |
tree | 1120886b680851bc8b8f8d337af3503ecd4a3d71 /nixos/modules/services/amqp/rabbitmq.nix | |
parent | 3e4a382d6753a057256c7ef1e9f52ae9e07bd677 (diff) | |
parent | 30431e71608576baf880567b2894ad2a542f8d5e (diff) | |
download | nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar.gz nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar.bz2 nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar.lz nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar.xz nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.tar.zst nixlib-f64d84698eb3f4d833e846336ff99a73331c31f7.zip |
Merge remote-tracking branch 'origin/master' into staging
Conflicts: pkgs/applications/audio/espeak/edit.nix pkgs/applications/audio/lmms/default.nix pkgs/desktops/e18/enlightenment.nix pkgs/games/exult/default.nix pkgs/os-specific/linux/alsa-plugins/default.nix
Diffstat (limited to 'nixos/modules/services/amqp/rabbitmq.nix')
-rw-r--r-- | nixos/modules/services/amqp/rabbitmq.nix | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix index bef15fb64b7f..a930098bfeec 100644 --- a/nixos/modules/services/amqp/rabbitmq.nix +++ b/nixos/modules/services/amqp/rabbitmq.nix @@ -4,6 +4,8 @@ with lib; let cfg = config.services.rabbitmq; + config_file = pkgs.writeText "rabbitmq.config" cfg.config; + config_file_wo_suffix = builtins.substring 0 ((builtins.stringLength config_file) - 7) config_file; in { ###### interface @@ -31,7 +33,6 @@ in { ''; }; - dataDir = mkOption { type = types.path; default = "/var/lib/rabbitmq"; @@ -40,6 +41,30 @@ in { ''; }; + cookie = mkOption { + default = ""; + type = types.str; + description = '' + Erlang cookie is a string of arbitrary length which must + be the same for several nodes to be allowed to communicate. + Leave empty to generate automatically. + ''; + }; + + config = mkOption { + default = ""; + type = types.str; + description = '' + Verbatim configuration file contents. + See http://www.rabbitmq.com/configure.htm + ''; + }; + + plugins = mkOption { + default = []; + type = types.listOf types.str; + description = "The names of plugins to enable"; + }; }; }; @@ -69,7 +94,10 @@ in { RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress; RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false"; SYS_PREFIX = ""; - }; + RABBITMQ_ENABLED_PLUGINS_FILE = pkgs.writeText "enabled_plugins" '' + [ ${concatStringsSep "," cfg.plugins} ]. + ''; + } // optionalAttrs (cfg.config != "") { RABBITMQ_CONFIG_FILE = config_file_wo_suffix; }; serviceConfig = { ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server"; @@ -81,6 +109,15 @@ in { preStart = '' mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir} if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi + + ${optionalString (cfg.cookie != "") '' + echo -n ${cfg.cookie} > ${cfg.dataDir}/.erlang.cookie + chmod 400 ${cfg.dataDir}/.erlang.cookie + chown rabbitmq:rabbitmq ${cfg.dataDir}/.erlang.cookie + ''} + + mkdir -p /var/log/rabbitmq && chmod 0700 /var/log/rabbitmq + chown rabbitmq:rabbitmq /var/log/rabbitmq ''; }; |