From patchwork Tue Sep 8 13:53:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Abramov X-Patchwork-Id: 23960 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id D3C5B27BBE8; Tue, 8 Sep 2020 15:04:02 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 8A00B27BBE7 for ; Tue, 8 Sep 2020 15:04:02 +0100 (BST) Received: from localhost ([::1]:59730 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kFeE5-0000Dn-Mc for patchwork@mira.cbaines.net; Tue, 08 Sep 2020 10:04:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:56276) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kFe4Q-0000wz-Hh for guix-patches@gnu.org; Tue, 08 Sep 2020 09:54:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:41001) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1kFe4Q-0001o4-8K for guix-patches@gnu.org; Tue, 08 Sep 2020 09:54:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1kFe4Q-0006WR-7X for guix-patches@gnu.org; Tue, 08 Sep 2020 09:54:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#42899] [PATCH v4 2/8] services: dovecot: Use modules via symlink to system profile. Resent-From: Alexey Abramov Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 08 Sep 2020 13:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 42899 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 42899@debbugs.gnu.org Received: via spool by 42899-submit@debbugs.gnu.org id=B42899.159957323825048 (code B ref 42899); Tue, 08 Sep 2020 13:54:02 +0000 Received: (at 42899) by debbugs.gnu.org; 8 Sep 2020 13:53:58 +0000 Received: from localhost ([127.0.0.1]:52542 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kFe4M-0006Vq-7X for submit@debbugs.gnu.org; Tue, 08 Sep 2020 09:53:58 -0400 Received: from mx4.mail.mmer.org ([178.22.66.29]:30816) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kFe4J-0006VD-Qz for 42899@debbugs.gnu.org; Tue, 08 Sep 2020 09:53:56 -0400 Received: from delta (92-109-1-225.cable.dynamic.v4.ziggo.nl [92.109.1.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx4.mail.mmer.org (Postfix) with ESMTPSA id B75B79CE31 for <42899@debbugs.gnu.org>; Tue, 8 Sep 2020 13:23:08 +0000 (UTC) From: Alexey Abramov Date: Tue, 8 Sep 2020 15:53:42 +0200 Message-Id: <20200908135348.18551-2-levenson@mmer.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200908135348.18551-1-levenson@mmer.org> References: <20200908135348.18551-1-levenson@mmer.org> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * gnu/services/mail.scm (%dovecot-activation): Link the location with multiple plugins (dovecot-pigeonhole, etc), to a place where dovecot can find them. * gnu/services/mail.scm (dovecot-configuration): Use the symlink. --- doc/guix.texi | 9 +++++++-- gnu/services/mail.scm | 13 ++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index f224e356bc..61b65db35b 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18613,8 +18613,13 @@ Defaults to @samp{"/var/run/dovecot/auth-userdb"}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} file-name mail-plugin-dir -Directory where to look up mail plugins. -Defaults to @samp{"/usr/lib/dovecot"}. +Directory where to look up mail plugins. In Guix, dovecot plugins have +all its modules under /gnu/store/xxx-plugin/(lib|libexec)/dovecot. To be +able to load all those modules by doveconf or services like sieve, +@samp{mail-plugin-dir} is a symlink "/run/current-system/profile/lib/dovecot", +which creates during the activation step. + +Defaults to @samp{"/etc/dovecot/modules"}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index cfcaf4601b..2832303d88 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -1044,8 +1044,12 @@ directories are prefixed with the chroot directory, append \"/.\" to This is used by imap (for shared users) and lda.") (mail-plugin-dir - (file-name "/usr/lib/dovecot") - "Directory where to look up mail plugins.") + (file-name "/etc/dovecot/modules") + "Directory where to look up mail plugins. In Guix, dovecot plugins have +all its modules under /gnu/store/xxx-plugin/(lib|libexec)/dovecot. To be able +to load all those modules by doveconf or services like imap, +@samp{mail-plugin-dir} is a symlink `/run/current-system/profile/lib/dovecot`, +which creates during the activation step.") (mail-plugins (space-separated-string-list '()) @@ -1519,13 +1523,16 @@ greyed out, instead of only later giving \"not selectable\" popup error. (else (format (current-error-port) "Failed to create public key at ~a.\n" public-key))))) - (let ((user (getpwnam "dovecot"))) + (let ((user (getpwnam "dovecot")) + (moduledir "/etc/dovecot/modules")) (mkdir-p/perms "/var/run/dovecot" user #o755) (mkdir-p/perms "/var/lib/dovecot" user #o755) (mkdir-p/perms "/etc/dovecot" user #o755) (copy-file #$(plain-file "dovecot.conf" config-str) "/etc/dovecot/dovecot.conf") (mkdir-p/perms "/etc/dovecot/private" user #o700) + (unless (file-exists? moduledir) + (symlink "/run/current-system/profile/lib/dovecot" moduledir)) (create-self-signed-certificate-if-absent #:private-key "/etc/dovecot/private/default.pem" #:public-key "/etc/dovecot/default.pem"