;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-FileCopyrightText: 2026 Marek Paśnikowski ;;; COPYRIGHT NOTICE ;;; ;;; Copyright 2026, Marek Paśnikowski ;;; LICENSE NOTICE ;;; ;;; This library is free software: you can redistribute it and/or modify it under the terms of ;;; the GNU General Public License as published by the Free Software Foundation, ;;; either version 3 of the License, or (at your option) any later version. ;;; ;;; This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; ;;; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ;;; See the GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License along with this library. ;;; If not, see . (define-module (users id1000) #:use-module (guix gexp) #:use-module (sovereign services mail) #:use-module ( (gnu home) #:prefix gnu:home:) #:use-module ( (gnu home services) #:prefix gnu:home:services:) #:use-module ( (gnu home services desktop) #:prefix gnu:home:services:desktop:) #:use-module ( (gnu home services shepherd) #:prefix gnu:home:services:shepherd:) #:use-module ( (gnu home services sound) #:prefix gnu:home:services:sound:) #:use-module ( (gnu home services ssh) #:prefix gnu:home:services:ssh:) #:use-module ( (gnu packages audio) #:prefix gnu:packages:audio:) #:use-module ( (gnu packages disk) #:prefix gnu:packages:disk:) #:use-module ( (gnu packages version-control) #:prefix gnu:packages:version-control:) #:use-module ( (gnu services) #:prefix gnu:services:) #:use-module ( (gnu system accounts) #:prefix gnu:system:accounts:) #:use-module ( (sovereign packages emacs) #:prefix sovereign:packages:emacs:) #:use-module ( (sovereign services admin) #:prefix sovereign:services:admin:) #:use-module ( (sovereign services fontutils) #:prefix sovereign:services:fontutils:) #:use-module ( (sovereign system accounts) #:prefix sovereign:system:accounts:) #:use-module ( (sovereign systems) #:prefix sovereign:systems:)) (define dkimproxy-signature-dkim (dkimproxy-out-signature-configuration (algorithm "rsa-sha256") (key "/etc/mail/dkim/marekpasnikowski.pl.key") (method "relaxed") (selector "dkim") (type 'dkim))) (define dkimproxy-signature-domainkeys (dkimproxy-out-signature-configuration (method "mofws") (type 'domainkeys))) ;;;;; (define dkimproxy-signatures-marekpasnikowski (list dkimproxy-signature-dkim dkimproxy-signature-domainkeys)) (define dovecot-imap-login-inet-configuration ((@ (gnu services mail) inet-listener-configuration) (address "192.168.1.2") (port 993) (protocol "imaps"))) (define dovecot-lmtp-inet-configuration ((@ (gnu services mail) inet-listener-configuration) (address "192.168.1.2 127.0.0.1") (port 24) (protocol "lmtp"))) (define dovecot-lmtp-unix-configuration ((@ (gnu services mail) unix-listener-configuration) (group "vmail") (mode "0666") (path "lmtp") (user "vmail"))) (define mailbox-marekpasnikowski-archive ((@ (gnu services mail) mailbox-configuration) (name "Archive") (auto "subscribe") (special-use (list "\\Archive")))) (define mailbox-marekpasnikowski-drafts ((@ (gnu services mail) mailbox-configuration) (name "Drafts") (auto "subscribe") (special-use (list "\\Drafts")))) (define mailbox-marekpasnikowski-junk ((@ (gnu services mail) mailbox-configuration) (name "Junk") (auto "subscribe") (special-use (list "\\Junk")))) (define mailbox-marekpasnikowski-sent ((@ (gnu services mail) mailbox-configuration) (name "Sent") (auto "subscribe") (special-use (list "\\Sent")))) (define mailbox-marekpasnikowski-trash ((@ (gnu services mail) mailbox-configuration) (name "Trash") (auto "subscribe") (special-use (list "\\Trash")))) ;;; (define dkimproxy-sender-marekpasnikowski `("marekpasnikowski.pl" ,dkimproxy-signatures-marekpasnikowski)) (define dovecot-imap ((@ (gnu services mail) protocol-configuration) (name "imap"))) (define dovecot-imap-login-configuration ((@ (gnu services mail) service-configuration) (kind "imap-login") (listeners (list dovecot-imap-login-inet-configuration)))) (define dovecot-lmtp ((@ (gnu services mail) protocol-configuration) (name "lmtp"))) (define dovecot-lmtp-configuration ((@ (gnu services mail) service-configuration) (kind "lmtp") (listeners (list dovecot-lmtp-inet-configuration dovecot-lmtp-unix-configuration)))) (define dovecot-passwd-file ((@ (gnu services mail) passdb-configuration) (args (list "username_format=%n" "/secrets/dovecot")) (driver "passwd-file"))) (define dovecot-namespace-marekpasnikowski ((@ (gnu services mail) namespace-configuration) (name "inbox") (inbox? #t) (mailboxes (list mailbox-marekpasnikowski-archive mailbox-marekpasnikowski-drafts mailbox-marekpasnikowski-junk mailbox-marekpasnikowski-sent mailbox-marekpasnikowski-trash)))) (define dovecot-userdb-static-configuration ((@ (gnu services mail) userdb-configuration) (args (list "gid=vmail" "home=/home/vmail/%n" "uid=vmail")) (driver "static"))) (define ssl-cert-path (string-append "