{ config, lib, pkgs, nixosConfig, ... }: let params = import ../../../secrets/email.nix; realName = nixosConfig.users.users.jez.description; in { accounts.email.accounts.main = rec { #primary = true; inherit realName; inherit (params.main) address userName passwordCommand aliases; imap = { inherit (params.main) host; tls.useStartTls = true; }; smtp = { inherit (params.main) host; port = 587; tls.useStartTls = true; }; mu.enable = true; mbsync = { enable = true; create = "both"; remove = "both"; expunge = "both"; flatten = "."; patterns = [ "*" ]; }; msmtp.enable = true; }; accounts.email.accounts.fm = rec { primary = true; inherit realName; inherit (params.fm) address userName passwordCommand aliases; imap = { host = params.fm.host.imap; }; smtp = { host = params.fm.host.smtp; }; mu.enable = true; mbsync = { enable = true; create = "both"; remove = "both"; expunge = "both"; flatten = "."; patterns = [ "*" ]; extraConfig.channel = { CopyArrivalDate = "yes"; }; }; msmtp.enable = true; }; accounts.email.accounts.protonmail = rec { inherit realName; inherit (params.protonmail) address userName passwordCommand; imap = { host = "127.0.0.1"; port = 1143; tls.enable = false; }; mbsync = { enable = false; create = "maildir"; flatten = "."; patterns = [ "INBOX" "Sent" "All Mail" ]; extraConfig.account = { Timeout = 300; }; }; }; programs.mu.enable = true; programs.zsh.initExtra = '' function mu-archive { mu "$@" --muhome ~/Archive/Mail/mu } ''; programs.msmtp.enable = true; programs.mbsync.enable = true; services.mbsync = { enable = true; postExec = "${pkgs.bash}/bin/bash -c '${pkgs.mu}/bin/mu index || true'"; }; }