at 17.09-beta 1.4 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5{ 6 ###### interface 7 8 options = { 9 10 services.openfire = { 11 12 enable = mkOption { 13 default = false; 14 description = " 15 Whether to enable OpenFire XMPP server. 16 "; 17 }; 18 19 usePostgreSQL = mkOption { 20 default = true; 21 description = " 22 Whether you use PostgreSQL service for your storage back-end. 23 "; 24 }; 25 26 }; 27 28 }; 29 30 31 ###### implementation 32 33 config = mkIf config.services.openfire.enable { 34 35 assertions = singleton 36 { assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable); 37 message = "OpenFire configured to use PostgreSQL but services.postgresql.enable is not enabled."; 38 }; 39 40 systemd.services.openfire = { 41 description = "OpenFire XMPP server"; 42 wantedBy = [ "multi-user.target" ]; 43 after = [ "networking.target" ] ++ 44 optional config.services.openfire.usePostgreSQL "postgresql.service"; 45 path = with pkgs; [ jre openfire coreutils which gnugrep gawk gnused ]; 46 script = '' 47 export HOME=/tmp 48 mkdir /var/log/openfire || true 49 mkdir /etc/openfire || true 50 for i in ${pkgs.openfire}/conf.inst/*; do 51 if ! test -f /etc/openfire/$(basename $i); then 52 cp $i /etc/openfire/ 53 fi 54 done 55 openfire start 56 ''; # */ 57 }; 58 }; 59 60}