From b4fbffe79c00f19be94b86b4144ff67541613659 Mon Sep 17 00:00:00 2001 From: Yureka Date: Wed, 12 Mar 2025 23:51:07 +0100 Subject: [PATCH] services.dovecot2.modules option has been removed --- mail-server/dovecot.nix | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/mail-server/dovecot.nix b/mail-server/dovecot.nix index 0abfec4..8e6d2b2 100644 --- a/mail-server/dovecot.nix +++ b/mail-server/dovecot.nix @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see -{ config, pkgs, lib, ... }: +{ options, config, pkgs, lib, ... }: with (import ./common.nix { inherit config pkgs lib; }); @@ -143,6 +143,12 @@ let else scope ); + dovecotModules = [ + pkgs.dovecot_pigeonhole + ] ++ lib.optional cfg.fullTextSearch.enable pkgs.dovecot_fts_xapian; + # Remove and assume `false` after NixOS 25.05 + haveDovecotModulesOption = options.services.dovecot2 ? "modules" && (options.services.dovecot2.modules.visible or true); + in { config = with cfg; lib.mkIf enable { @@ -158,9 +164,14 @@ in # which are usually not compatible. environment.systemPackages = [ pkgs.dovecot_pigeonhole - ]; + ] ++ lib.optionals (!haveDovecotModulesOption) dovecotModules; - services.dovecot2 = { + # For compatibility with python imaplib + environment.etc = lib.mkIf (!haveDovecotModulesOption) { + "dovecot/modules".source = "/run/current-system/sw/lib/dovecot/modules"; + }; + + services.dovecot2 = lib.mkMerge [{ enable = true; enableImap = enableImap || enableImapSsl; enablePop3 = enablePop3 || enablePop3Ssl; @@ -172,7 +183,6 @@ in sslServerCert = certificatePath; sslServerKey = keyPath; enableLmtp = true; - modules = [ pkgs.dovecot_pigeonhole ] ++ (lib.optional cfg.fullTextSearch.enable pkgs.dovecot_fts_xapian ); mailPlugins.globally.enable = lib.optionals cfg.fullTextSearch.enable [ "fts" "fts_xapian" ]; protocols = lib.optional cfg.enableManageSieve "sieve"; @@ -372,7 +382,11 @@ in lda_mailbox_autosubscribe = yes lda_mailbox_autocreate = yes ''; - }; + } + (lib.mkIf haveDovecotModulesOption { + modules = dovecotModules; + }) + ]; systemd.services.dovecot2 = { preStart = ''