parent
e174562ee1
commit
c4a2eeb9f8
@ -0,0 +1,90 @@ |
||||
{ config, pkgs, ... }: |
||||
|
||||
with pkgs.lib; |
||||
|
||||
let |
||||
|
||||
cfg = config.services.rabbitmq; |
||||
|
||||
run = cmd: "${pkgs.sudo}/bin/sudo -E -u rabbitmq ${cmd}"; |
||||
|
||||
in |
||||
|
||||
{ |
||||
|
||||
|
||||
###### interface |
||||
|
||||
options = { |
||||
|
||||
services.rabbitmq = { |
||||
|
||||
enable = mkOption { |
||||
default = false; |
||||
description = '' |
||||
Whether to enable the RabbitMQ server, an Advanced Message |
||||
Queuing Protocol (AMQP) broker. |
||||
''; |
||||
}; |
||||
|
||||
listenAddress = mkOption { |
||||
default = "127.0.0.1"; |
||||
example = ""; |
||||
description = '' |
||||
IP address on which RabbitMQ will listen for AMQP |
||||
connections. Set to the empty string to listen on all |
||||
interfaces. Note that RabbitMQ creates a user named |
||||
<literal>guest</literal> with password |
||||
<literal>guest</literal> by default, so you should delete |
||||
this user if you intend to allow external access. |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
}; |
||||
|
||||
|
||||
###### implementation |
||||
|
||||
config = mkIf cfg.enable { |
||||
|
||||
environment.systemPackages = [ pkgs.rabbitmq_server ]; |
||||
|
||||
users.extraUsers = singleton |
||||
{ name = "rabbitmq"; |
||||
description = "RabbitMQ server user"; |
||||
home = "/var/empty"; |
||||
}; |
||||
|
||||
jobs.rabbitmq = { |
||||
description = "RabbitMQ server"; |
||||
|
||||
startOn = "started network-interfaces"; |
||||
|
||||
preStart = |
||||
'' |
||||
mkdir -m 0700 -p /var/lib/rabbitmq |
||||
chown rabbitmq /var/lib/rabbitmq |
||||
|
||||
mkdir -m 0700 -p /var/log/rabbitmq |
||||
chown rabbitmq /var/log/rabbitmq |
||||
''; |
||||
|
||||
environment.HOME = "/var/lib/rabbitmq"; |
||||
environment.RABBITMQ_NODE_IP_ADDRESS = cfg.listenAddress; |
||||
|
||||
exec = |
||||
'' |
||||
${run "${pkgs.rabbitmq_server}/sbin/rabbitmq-server"} |
||||
''; |
||||
|
||||
preStop = |
||||
'' |
||||
${run "${pkgs.rabbitmq_server}/sbin/rabbitmqctl stop"} |
||||
''; |
||||
}; |
||||
|
||||
}; |
||||
|
||||
} |
Loading…
Reference in new issue