at 21.11-pre 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 = mkEnableOption "OpenFire XMPP server"; 13 14 usePostgreSQL = mkOption { 15 type = types.bool; 16 default = true; 17 description = " 18 Whether you use PostgreSQL service for your storage back-end. 19 "; 20 }; 21 22 }; 23 24 }; 25 26 27 ###### implementation 28 29 config = mkIf config.services.openfire.enable { 30 31 assertions = singleton 32 { assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable); 33 message = "OpenFire configured to use PostgreSQL but services.postgresql.enable is not enabled."; 34 }; 35 36 systemd.services.openfire = { 37 description = "OpenFire XMPP server"; 38 wantedBy = [ "multi-user.target" ]; 39 after = [ "networking.target" ] ++ 40 optional config.services.openfire.usePostgreSQL "postgresql.service"; 41 path = with pkgs; [ jre openfire coreutils which gnugrep gawk gnused ]; 42 script = '' 43 export HOME=/tmp 44 mkdir /var/log/openfire || true 45 mkdir /etc/openfire || true 46 for i in ${pkgs.openfire}/conf.inst/*; do 47 if ! test -f /etc/openfire/$(basename $i); then 48 cp $i /etc/openfire/ 49 fi 50 done 51 openfire start 52 ''; # */ 53 }; 54 }; 55 56}