{ config, lib, pkgs, ... }: let mkAccount = addr: let domain = lib.lists.elemAt (lib.strings.splitString "@" addr) 1; in { address = addr; gpg = { key = "F2132F0C63730C6BC42BCC2A41A6D13FECA21280"; signByDefault = true; }; mbsync = { enable = true; create = "maildir"; }; passwordCommand = "${lib.getBin pkgs.gopass}/bin/gopass --nosync show -o eMail/${domain}/${addr}"; msmtp.enable = true; notmuch.enable = true; realName = "Alexander Kobjolke"; userName = addr; }; in { programs.afew.enable = true; programs.mbsync.enable = true; programs.msmtp.enable = true; programs.notmuch = { enable = true; hooks.preNew = "mbsync --all"; }; programs.mu = { enable = true; }; accounts.email = { accounts.failco = mkAccount "me@failco.de" // { primary = true; imap.host = "thrall.failco.de"; smtp.host = "thrall.failco.de"; }; accounts.jakalx = mkAccount "alex@jakalx.net" // { imap.host = "thrall.failco.de"; smtp.host = "thrall.failco.de"; }; accounts.google = mkAccount "petry.alexander@gmail.com" // { flavor = "gmail.com"; }; }; }