{ pkgs, lib, ... }: let gpg-default-key = "116987A8DD3F78FF8601BF4DB95E8FE6B11C4D09"; in { sops.secrets = { "email/rfive" = { }; "email/tu-dresden" = { }; "email/ifsr" = { }; "email/google" = { }; }; home.packages = with pkgs; [ imv w3m urlview ]; services.mbsync.enable = true; systemd.user.services.mbsync.Unit.After = [ "sops-nix.service" ]; programs = { neomutt = { enable = true; sidebar.enable = true; checkStatsInterval = 30; extraConfig = '' bind pager noop bind index,pager \Cp sidebar-prev # Move the highlight to the next mailbox bind index,pager \Cn sidebar-next # Open the highlighted mailbox bind index,pager sidebar-open set mailcap_path = ${./mailcap} source ${./vim-keys.muttrc} source ${./dracula.muttrc} source ${./powerline.muttrc} ''; }; mbsync.enable = true; msmtp.enable = true; }; accounts.email.accounts = { "rouven@rfive.de" = rec { address = "rouven@rfive.de"; gpg.key = gpg-default-key; realName = "Rouven Seifert"; userName = address; passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/rfive"; imap = { host = "falkenstein.vpn.rfive.de"; port = 993; }; smtp = { host = "falkenstein.vpn.rfive.de"; port = 587; tls.useStartTls = true; }; msmtp.enable = true; mbsync = { enable = true; create = "maildir"; expunge = "both"; groups.rfive = { channels.inbox = { nearPattern = "INBOX"; farPattern = "INBOX"; extraConfig.Create = "near"; }; channels.trash = { nearPattern = "Trash"; farPattern = "Trash"; extraConfig.Create = "near"; }; channels.sent = { nearPattern = "Sent"; farPattern = "Sent"; extraConfig.Create = "near"; }; channels.junk = { nearPattern = "Junk"; farPattern = "Junk"; extraConfig.Create = "near"; }; channels.drafts = { nearPattern = "Drafts"; farPattern = "Drafts"; extraConfig.Create = "near"; }; }; extraConfig = { account = { AuthMechs = "Login"; }; }; }; neomutt = let c = mbsync.groups.rfive.channels; in { enable = true; mailboxName = " 󰒋 rfive.de"; extraMailboxes = lib.lists.forEach [ c.sent c.trash c.junk c.drafts ] (x: x.nearPattern); }; }; "TU-Dresden" = rec { address = "rouven.seifert@mailbox.tu-dresden.de"; gpg.key = gpg-default-key; realName = "Rouven Seifert"; userName = "rose159e"; passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/tu-dresden"; imap = { host = "msx.tu-dresden.de"; port = 993; }; smtp = { host = "msx.tu-dresden.de"; port = 587; tls.useStartTls = true; }; mbsync = { enable = true; create = "maildir"; expunge = "both"; groups.tud = { channels.inbox = { nearPattern = "INBOX"; farPattern = "INBOX"; extraConfig.Create = "near"; }; channels.opal = { nearPattern = "Opal"; farPattern = "Opal"; extraConfig.Create = "near"; }; channels.trash = { nearPattern = "Trash"; farPattern = "Gel&APY-schte Elemente"; extraConfig.Create = "near"; }; channels.sent = { nearPattern = "Sent"; farPattern = "Gesendete Elemente"; extraConfig.Create = "near"; }; channels.junk = { nearPattern = "Junk"; farPattern = "Junk-E-Mail"; extraConfig.Create = "near"; }; channels.drafts = { nearPattern = "Drafts"; farPattern = "Entw&APw-rfe"; extraConfig.Create = "near"; }; }; extraConfig = { account = { AuthMechs = "Login"; }; }; }; msmtp.enable = true; neomutt = let c = mbsync.groups.tud.channels; in { enable = true; mailboxName = "  TU Dresden"; extraMailboxes = lib.lists.forEach [ c.opal c.sent c.trash c.junk c.drafts ] (x: x.nearPattern); }; }; "iFSR" = rec { address = "rouven.seifert@ifsr.de"; signature = { showSignature = "append"; text = '' Rouven Seifert Fachschaftsrat Informatik TU Dresden Fakultät Informatik Nöthnitzer Str. 46, 01187 Dresden ''; }; primary = true; gpg.key = gpg-default-key; realName = "Rouven Seifert"; userName = "rouven.seifert"; passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/ifsr"; imap = { host = "mail.ifsr.de"; port = 143; tls.useStartTls = true; }; smtp = { host = "mail.ifsr.de"; port = 587; tls.useStartTls = true; }; mbsync = { enable = true; create = "maildir"; expunge = "both"; groups.ifsr = { channels.inbox = { nearPattern = "INBOX"; farPattern = "INBOX"; extraConfig.Create = "near"; }; channels.admin = { nearPattern = "Admin spam"; farPattern = "Admin spam"; extraConfig.Create = "near"; }; channels.trash = { nearPattern = "Trash"; farPattern = "Trash"; extraConfig.Create = "near"; }; channels.sent = { nearPattern = "Sent"; farPattern = "Sent"; extraConfig.Create = "near"; }; channels.junk = { nearPattern = "Junk"; farPattern = "Public/Spam"; extraConfig.Create = "near"; }; channels.drafts = { nearPattern = "Drafts"; farPattern = "Drafts"; extraConfig.Create = "near"; }; }; extraConfig = { account = { AuthMechs = "Login"; }; }; }; msmtp.enable = true; neomutt = let c = mbsync.groups.ifsr.channels; in { enable = true; mailboxName = "  iFSR"; extraMailboxes = lib.lists.forEach [ c.admin c.sent c.trash c.junk c.drafts ] (x: x.nearPattern); }; }; "gmail" = rec { address = "seifertrouven@gmail.com"; realName = "Rouven Seifert"; userName = address; passwordCommand = "${pkgs.coreutils}/bin/cat $XDG_RUNTIME_DIR/secrets/email/google"; imap = { host = "imap.gmail.com"; port = 993; }; smtp = { host = "smtp.gmail.com"; port = 465; }; mbsync = { enable = true; create = "maildir"; expunge = "both"; groups.gmail = { channels.inbox = { nearPattern = "INBOX"; farPattern = "INBOX"; extraConfig.Create = "near"; }; channels.trash = { nearPattern = "Trash"; farPattern = "[Gmail]/Papierkorb"; extraConfig.Create = "near"; }; channels.sent = { nearPattern = "Sent"; farPattern = "[Gmail]/Gesendet"; extraConfig.Create = "near"; }; channels.junk = { nearPattern = "Junk"; farPattern = "[Gmail]/Spam"; extraConfig.Create = "near"; }; channels.drafts = { nearPattern = "Drafts"; farPattern = "[Gmail]/Entw&APw-rfe"; extraConfig.Create = "near"; }; }; extraConfig = { account = { AuthMechs = "Login"; }; }; }; msmtp.enable = true; neomutt = let c = mbsync.groups.gmail.channels; in { enable = true; mailboxName = " 󰊫 gmail"; extraMailboxes = lib.lists.forEach [ c.sent c.trash c.junk c.drafts ] (x: x.nearPattern); extraConfig = '' set copy = no ''; }; }; }; home.file.".urlview".text = '' COMMAND ${pkgs.xdg-utils}/bin/xdg-open %s &> /dev/null ''; }