summary refs log tree commit diff
path: root/nixos/modules/services/amqp
diff options
context:
space:
mode:
authorJaka Hudoklin <jakahudoklin@gmail.com>2014-03-10 11:10:32 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2014-03-29 10:56:07 +0100
commit227997d8cab68c3305da72cd48e425da36233936 (patch)
treed13ba20a7a2686215fbfa8401d82b58b804f6a5c /nixos/modules/services/amqp
parentc23464672ec9be77b03abb8a4dec72324dcfee22 (diff)
downloadnixlib-227997d8cab68c3305da72cd48e425da36233936.tar
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.gz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.bz2
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.lz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.xz
nixlib-227997d8cab68c3305da72cd48e425da36233936.tar.zst
nixlib-227997d8cab68c3305da72cd48e425da36233936.zip
nixos/rabbitmq: rewrite
- rewrite from old jobs options to new services
- add simple test
- add dataDir option
Diffstat (limited to 'nixos/modules/services/amqp')
-rw-r--r--nixos/modules/services/amqp/rabbitmq.nix69
1 files changed, 32 insertions, 37 deletions
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
+      '';
+    };
+
   };
 
 }