From 8d17cf1c2fcfb48919a10782db7839f1b737f3ea Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Thu, 30 Mar 2017 15:25:58 +1100 Subject: services: Add mail-aliases-service-type. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/mail.scm (mail-aliases-etc): New procedure. (mail-aliases-service-type): New variable. Signed-off-by: Ludovic Courtès --- gnu/services/mail.scm | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'gnu/services/mail.scm') diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index 20043d7518..6325589bff 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -35,6 +35,7 @@ #:use-module (guix gexp) #:use-module (ice-9 match) #:use-module (ice-9 format) + #:use-module (srfi srfi-1) #:export (dovecot-service dovecot-service-type dovecot-configuration @@ -57,6 +58,8 @@ opensmtpd-service-type %default-opensmtpd-config-file + mail-aliases-service-type + exim-configuration exim-configuration? exim-service-type @@ -1660,6 +1663,31 @@ accept from local for any relay (service-extension shepherd-root-service-type opensmtpd-shepherd-service))))) + +;;; +;;; mail aliases. +;;; + +(define (mail-aliases-etc aliases) + `(("aliases" ,(plain-file "aliases" + ;; Ideally we'd use a format string like + ;; "~:{~a: ~{~a~^,~}\n~}", but it gives a + ;; warning that I can't figure out how to fix, + ;; so we'll just use string-join below instead. + (format #f "~:{~a: ~a\n~}" + (map (match-lambda + ((alias addresses ...) + (list alias (string-join addresses ",")))) + aliases)))))) + +(define mail-aliases-service-type + (service-type + (name 'mail-aliases) + (extensions + (list (service-extension etc-service-type mail-aliases-etc))) + (compose concatenate) + (extend append))) + ;;; ;;; Exim. -- cgit 1.4.1 From b065f78e943b6d8e2a45c20f4c9f7a07ade8aefd Mon Sep 17 00:00:00 2001 From: Carlo Zancanaro Date: Thu, 30 Mar 2017 15:28:26 +1100 Subject: services: Make exim-service-type use mail-aliases-service-type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/mail.scm (exim-configuration)[aliases]: Remove field. (exim-activation, exim-shepherd-service): Remove alias from matches. (exim-etc): Remove procedure. (exim-service-type): Extend mail-aliases-service-type instead of etc-service-type. Signed-off-by: Ludovic Courtès --- gnu/services/mail.scm | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) (limited to 'gnu/services/mail.scm') diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index 6325589bff..6305f06f85 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -1699,9 +1699,7 @@ accept from local for any relay (package exim-configuration-package ; (default exim)) (config-file exim-configuration-config-file ;file-like - (default #f)) - (aliases exim-configuration-aliases ;; list of lists - (default '()))) + (default #f))) (define %exim-accounts (list (user-group @@ -1728,7 +1726,7 @@ exim_group = exim (define exim-shepherd-service (match-lambda - (($ package config-file aliases) + (($ package config-file) (list (shepherd-service (provision '(exim mta)) (documentation "Run the exim daemon.") @@ -1741,7 +1739,7 @@ exim_group = exim (define exim-activation (match-lambda - (($ package config-file aliases) + (($ package config-file) (with-imported-modules '((guix build utils)) #~(begin (use-modules (guix build utils)) @@ -1754,20 +1752,6 @@ exim_group = exim (zero? (system* #$(file-append package "/bin/exim") "-bV" "-C" #$(exim-computed-config-file package config-file)))))))) -(define exim-etc - (match-lambda - (($ package config-file aliases) - `(("aliases" ,(plain-file "aliases" - ;; Ideally we'd use a format string like - ;; "~:{~a: ~{~a~^,~}\n~}", but it gives a - ;; warning that I can't figure out how to fix, - ;; so we'll just use string-join below instead. - (format #f "~:{~a: ~a\n~}" - (map (lambda (entry) - (list (car entry) - (string-join (cdr entry) ","))) - aliases)))))))) - (define exim-profile (compose list exim-configuration-package)) @@ -1779,4 +1763,4 @@ exim_group = exim (service-extension account-service-type (const %exim-accounts)) (service-extension activation-service-type exim-activation) (service-extension profile-service-type exim-profile) - (service-extension etc-service-type exim-etc))))) + (service-extension mail-aliases-service-type (const '())))))) -- cgit 1.4.1