61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { config, lib, pkgs, ... }:
 | |
| 
 | |
| with lib;
 | |
| 
 | |
| {
 | |
|   ###### interface
 | |
| 
 | |
|   options = {
 | |
| 
 | |
|     services.openfire = {
 | |
| 
 | |
|       enable = mkOption {
 | |
|         default = false;
 | |
|         description = "
 | |
|           Whether to enable OpenFire XMPP server.
 | |
|         ";
 | |
|       };
 | |
| 
 | |
|       usePostgreSQL = mkOption {
 | |
|         default = true;
 | |
|         description = "
 | |
|           Whether you use PostgreSQL service for your storage back-end.
 | |
|         ";
 | |
|       };
 | |
| 
 | |
|     };
 | |
| 
 | |
|   };
 | |
| 
 | |
| 
 | |
|   ###### implementation
 | |
| 
 | |
|   config = mkIf config.services.openfire.enable {
 | |
| 
 | |
|     assertions = singleton
 | |
|       { assertion = !(config.services.openfire.usePostgreSQL -> config.services.postgresql.enable);
 | |
|         message = "OpenFire configured to use PostgreSQL but services.postgresql.enable is not enabled.";
 | |
|       };
 | |
| 
 | |
|     systemd.services.openfire = {
 | |
|       description = "OpenFire XMPP server";
 | |
|       wantedBy = [ "multi-user.target" ];
 | |
|       after = [ "networking.target" ] ++
 | |
|         optional config.services.openfire.usePostgreSQL "postgresql.service";
 | |
|       path = with pkgs; [ jre openfire coreutils which gnugrep gawk gnused ];
 | |
|       script = ''
 | |
|         export HOME=/tmp
 | |
|         mkdir /var/log/openfire || true
 | |
|         mkdir /etc/openfire || true
 | |
|         for i in ${pkgs.openfire}/conf.inst/*; do
 | |
|             if ! test -f /etc/openfire/$(basename $i); then
 | |
|                 cp $i /etc/openfire/
 | |
|             fi
 | |
|         done
 | |
|         openfire start
 | |
|       ''; # */
 | |
|     };
 | |
|   };
 | |
| 
 | |
| }
 | 
