summary refs log tree commit diff
path: root/nixos/modules/services/amqp
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2015-01-26 02:07:05 +0100
committerJaka Hudoklin <jakahudoklin@gmail.com>2015-01-26 02:09:04 +0100
commit6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86 (patch)
tree5e3265233196f02a6a73aeb16c478035d390411d /nixos/modules/services/amqp
parent4631ea8ed90c985063a94ff3f19b548e3e474c1d (diff)
downloadnixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar.gz
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar.bz2
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar.lz
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar.xz
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.tar.zst
nixlib-6e7d708bcc25c9e9fafd79e08a4b2fbcf94cda86.zip
nixos/rabbitmq: fix module
Diffstat (limited to 'nixos/modules/services/amqp')
-rw-r--r--nixos/modules/services/amqp/rabbitmq.nix32
1 files changed, 20 insertions, 12 deletions
diff --git a/nixos/modules/services/amqp/rabbitmq.nix b/nixos/modules/services/amqp/rabbitmq.nix
index 77487ec1ab91..780d5daded92 100644
--- a/nixos/modules/services/amqp/rabbitmq.nix
+++ b/nixos/modules/services/amqp/rabbitmq.nix
@@ -31,6 +31,15 @@ in {
           <literal>guest</literal> by default, so you should delete
           this user if you intend to allow external access.
         '';
+        type = types.str;
+      };
+
+      port = mkOption {
+        default = 5672;
+        description = ''
+          Port on which RabbitMQ will listen for AMQP connections.
+        '';
+        type = types.int;
       };
 
       dataDir = mkOption {
@@ -77,6 +86,7 @@ in {
     users.extraUsers.rabbitmq = {
       description = "RabbitMQ server user";
       home = "${cfg.dataDir}";
+      createHome = true;
       group = "rabbitmq";
       uid = config.ids.uids.rabbitmq;
     };
@@ -87,14 +97,16 @@ in {
       description = "RabbitMQ Server";
 
       wantedBy = [ "multi-user.target" ];
-      after = [ "network-interfaces.target" ];
+      after = [ "network.target" ];
 
-      path = [ pkgs.rabbitmq_server ];
+      path = [ pkgs.rabbitmq_server pkgs.procps ];
 
       environment = {
         RABBITMQ_MNESIA_BASE = "${cfg.dataDir}/mnesia";
         RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress;
+        RABBITMQ_NODE_PORT = toString cfg.port;
         RABBITMQ_SERVER_START_ARGS = "-rabbit error_logger tty -rabbit sasl_error_logger false";
+        RABBITMQ_PID_FILE = "${cfg.dataDir}/pid";
         SYS_PREFIX = "";
         RABBITMQ_ENABLED_PLUGINS_FILE = pkgs.writeText "enabled_plugins" ''
           [ ${concatStringsSep "," cfg.plugins} ].
@@ -103,26 +115,22 @@ in {
 
       serviceConfig = {
         ExecStart = "${pkgs.rabbitmq_server}/sbin/rabbitmq-server";
+        ExecStop = "${pkgs.rabbitmq_server}/sbin/rabbitmqctl stop";
         User = "rabbitmq";
         Group = "rabbitmq";
-        PermissionsStartOnly = true;
+        WorkingDirectory = cfg.dataDir;
       };
 
+      postStart = ''
+        rabbitmqctl wait ${cfg.dataDir}/pid
+      '';
+
       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
       '';
-
-      postStart = mkBefore "until rabbitmqctl status; do sleep 1; done";
     };
 
   };