nixos-config/users/rouven/modules/accounts/default.nix

309 lines
8.5 KiB
Nix

{ 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 <Space> 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 <space><return> 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 = "Spam";
farPattern = "Spam";
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
'';
}