From 227997d8cab68c3305da72cd48e425da36233936 Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Mon, 10 Mar 2014 11:10:32 +0100 Subject: nixos/rabbitmq: rewrite - rewrite from old jobs options to new services - add simple test - add dataDir option --- nixos/modules/services/amqp/rabbitmq.nix | 69 +++++++++++++++----------------- 1 file changed, 32 insertions(+), 37 deletions(-) (limited to 'nixos/modules/services/amqp') diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix index 696b5ad43797..dc1a68aefbbf 100644 --- a/nixos/modules/services/amqp/rabbitmq.nix +++ b/nixos/modules/services/amqp/rabbitmq.nix @@ -3,20 +3,11 @@ with pkgs.lib; let - cfg = config.services.rabbitmq; - run = cmd: "${pkgs.sudo}/bin/sudo -E -u rabbitmq ${cmd}"; - -in - -{ - - +in { ###### interface - options = { - services.rabbitmq = { enable = mkOption { @@ -40,55 +31,59 @@ in ''; }; - }; + dataDir = mkOption { + type = types.path; + default = "/var/lib/rabbitmq"; + description = '' + Data directory for rabbitmq. + ''; + }; + + }; }; ###### implementation - config = mkIf cfg.enable { environment.systemPackages = [ pkgs.rabbitmq_server ]; users.extraUsers.rabbitmq = { description = "RabbitMQ server user"; - home = "/var/empty"; + home = "${cfg.dataDir}"; group = "rabbitmq"; uid = config.ids.uids.rabbitmq; }; users.extraGroups.rabbitmq.gid = config.ids.gids.rabbitmq; - jobs.rabbitmq = { - description = "RabbitMQ server"; - - startOn = "started network-interfaces"; + systemd.services.rabbitmq = { + description = "RabbitMQ Server"; - preStart = - '' - mkdir -m 0700 -p /var/lib/rabbitmq - chown rabbitmq /var/lib/rabbitmq + wantedBy = [ "multi-user.target" ]; + after = [ "network-interfaces.target" ]; - mkdir -m 0700 -p /var/log/rabbitmq - chown rabbitmq /var/log/rabbitmq - ''; - - environment.HOME = "/var/lib/rabbitmq"; - environment.RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress; - environment.SYS_PREFIX = ""; - - exec = - '' - ${run "${pkgs.rabbitmq_server}/sbin/rabbitmq-server"} - ''; + environment = { + RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia"; + RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress; + RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false"; + SYS_PREFIX = ""; + }; - preStop = - '' - ${run "${pkgs.rabbitmq_server}/sbin/rabbitmqctl stop"} - ''; + serviceConfig = { + ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server"; + User = "rabbitmq"; + Group = "rabbitmq"; + PermissionsStartOnly = true; }; + preStart = '' + mkdir -p ${cfg.dataDir} && chmod 0700 ${cfg.dataDir} + if [ "$(id -u)" = 0 ]; then chown rabbitmq:rabbitmq ${cfg.dataDir}; fi + ''; + }; + }; } -- cgit 1.4.1