at 15.09-beta 1.5 kB view raw
1{ config, lib, pkgs, ... }: 2 3with lib; 4 5let 6 7 inherit (pkgs) jre openfire coreutils which gnugrep gawk gnused; 8 9 extraStartDependency = 10 if config.services.openfire.usePostgreSQL then "and started postgresql" else ""; 11 12in 13 14{ 15 16 ###### interface 17 18 options = { 19 20 services.openfire = { 21 22 enable = mkOption { 23 default = false; 24 description = " 25 Whether to enable OpenFire XMPP server. 26 "; 27 }; 28 29 usePostgreSQL = mkOption { 30 default = true; 31 description = " 32 Whether you use PostgreSQL service for your storage back-end. 33 "; 34 }; 35 36 }; 37 38 }; 39 40 41 ###### implementation 42 43 config = mkIf config.services.openfire.enable { 44 45 assertions = singleton 46 { assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable); 47 message = "OpenFire assertion failed."; 48 }; 49 50 jobs.openfire = 51 { description = "OpenFire XMPP server"; 52 53 startOn = "started networking ${extraStartDependency}"; 54 55 script = 56 '' 57 export PATH=${jre}/bin:${openfire}/bin:${coreutils}/bin:${which}/bin:${gnugrep}/bin:${gawk}/bin:${gnused}/bin 58 export HOME=/tmp 59 mkdir /var/log/openfire || true 60 mkdir /etc/openfire || true 61 for i in ${openfire}/conf.inst/*; do 62 if ! test -f /etc/openfire/$(basename $i); then 63 cp $i /etc/openfire/ 64 fi 65 done 66 openfire start 67 ''; # */ 68 }; 69 70 }; 71 72}