{ pkgs, config, lib, ... }: let defaults = { aerc.enable = true; mbsync = { enable = true; create = "maildir"; }; realName = "Kierán Meinhardt"; folders.inbox = "INBOX"; }; hu-defaults = { imap.host = "mailbox.cms.hu-berlin.de"; imap.port = 993; smtp.host = "mailhost.cms.hu-berlin.de"; smtp.port = 25; smtp.tls.useStartTls = true; }; in { age.secrets = { email-password-cock = { file = ../secrets/email-password-cock.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-fysi = { file = ../secrets/email-password-fysi.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-posteo = { file = ../secrets/email-password-posteo.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-meinhark = { file = ../secrets/email-password-meinhark.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-meinhaki = { file = ../secrets/email-password-meinhaki.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-dslalewa = { file = ../secrets/email-password-dslalewa.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; email-password-fsklassp = { file = ../secrets/email-password-fsklassp.age; owner = config.users.users.me.name; group = config.users.users.me.group; mode = "400"; }; }; home-manager.users.me = { programs.mbsync.enable = true; accounts.email.accounts = rec { hu-student = lib.recursiveUpdate defaults (lib.recursiveUpdate hu-defaults rec { userName = "meinhark"; address = "kieran.felix.meinhardt@hu-berlin.de"; aliases = ["${userName}@hu-berlin.de"]; passwordCommand = "cat ${config.age.secrets.email-password-meinhark.path}"; }); hu-student-cs = lib.recursiveUpdate defaults (lib.recursiveUpdate hu-defaults rec { userName = "meinhark"; address = "kieran.felix.meinhardt@informatik.hu-berlin.de"; aliases = ["${userName}@informatik.hu-berlin.de"]; imap.host = "mailbox.informatik.hu-berlin.de"; smtp.host = "mailhost.informatik.hu-berlin.de"; passwordCommand = "cat ${config.age.secrets.email-password-meinhark.path}"; }); hu-employee = lib.recursiveUpdate defaults (lib.recursiveUpdate hu-defaults rec { userName = "meinhaki"; address = "kieran.meinhardt@hu-berlin.de"; aliases = ["${userName}@hu-berlin.de"]; passwordCommand = "cat ${config.age.secrets.email-password-meinhaki.path}"; aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text); signature = { showSignature = "append"; text = '' ${defaults.realName} Studentische Hilfskraft / Administrator ALEW Humboldt-Universität zu Berlin Telefon: +49 (0)30 2093 9634 Raum 3.212, Dorotheenstraße 24, 10117 Berlin-Mitte https://alew.hu-berlin.de ''; }; }); hu-admin = lib.recursiveUpdate defaults (lib.recursiveUpdate hu-defaults rec { userName = "dslalewa"; address = "admin.alew.vglsprwi@hu-berlin.de"; aliases = ["${userName}@hu-berlin.de"]; passwordCommand = "cat ${config.age.secrets.email-password-dslalewa.path}"; inherit (hu-employee) signature; aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text); }); hu-fsi = lib.recursiveUpdate defaults (lib.recursiveUpdate hu-defaults rec { userName = "fsklassp"; passwordCommand = "cat ${config.age.secrets.email-password-fsklassp.path}"; address = "${userName}@hu-berlin.de"; realName = "FSI Klassische Philologie"; aerc.extraAccounts.signature-file = toString (pkgs.writeText "signature" signature.text); signature = { showSignature = "append"; text = '' Fachschafts-Initiative Humboldt-Universität zu Berlin Sprach- und literaturwissenschaftliche Fakultät Institut für klassische Philologie Unter den Linden 6 10099 Berlin ''; }; }); fysi = lib.recursiveUpdate defaults rec { address = "kieran@fysi.tech"; userName = address; passwordCommand = "cat ${config.age.secrets.email-password-fysi.path}"; flavor = "fastmail.com"; }; cock = lib.recursiveUpdate defaults rec { address = "2210@cock.li"; userName = address; passwordCommand = "cat ${config.age.secrets.email-password-cock.path}"; realName = ""; imap.host = "mail.cock.li"; smtp.host = imap.host; }; posteo = lib.recursiveUpdate defaults rec { address = "kieran.meinhardt@posteo.net"; aliases = ["kmein@posteo.de"]; userName = address; imap.host = "posteo.de"; smtp.host = imap.host; primary = true; passwordCommand = "cat ${config.age.secrets.email-password-posteo.path}"; # himalaya = { enable = true; backend = "imap"; sender = "smtp"; }; }; }; # programs.himalaya.enable = true; programs.aerc = { enable = true; extraBinds = { # Binds are of the form = # To use '=' in a key sequence, substitute it with "Eq": "" # If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit global = { "" = ":prev-tab"; "" = ":next-tab "; "" = ":term"; "?" = ":help keys"; }; messages = { q = ":quit"; j = ":next "; "" = ":next"; "" = ":next 50%"; "" = ":next 100%"; "" = ":next 100%"; k = ":prev "; "" = ":prev"; "" = ":prev 50%"; "" = ":prev 100%"; "" = ":prev 100%"; g = ":select 0 "; G = ":select -1"; J = ":next-folder "; K = ":prev-folder"; H = ":collapse-folder"; L = ":expand-folder"; "" = ":read -t:next"; v = ":mark -t"; V = ":mark -v"; F = ":flag -t"; T = ":toggle-threads"; "" = ":view"; d = ":prompt 'Delete? ' 'delete-message'"; D = ":move Trash"; A = ":archive flat"; C = ":compose"; rr = ":reply -a"; rq = ":reply -aq"; Rr = ":reply"; Rq = ":reply -q"; c = ":cf"; "$" = ":term"; "!" = ":term"; "|" = ":pipe"; "/" = ":search"; "\\" = ":filter "; n = ":next-result"; N = ":prev-result"; "" = ":clear"; "*" = ":filter -x Flagged"; }; view = { "/" = ":toggle-key-passthrough /"; q = ":close"; O = ":open"; S = ":save"; "|" = ":pipe"; D = ":move Trash"; A = ":archive flat"; "" = ":open-link "; f = ":forward "; rr = ":reply -a"; rq = ":reply -aq"; Rr = ":reply"; Rq = ":reply -q"; H = ":toggle-headers"; "" = ":prev-part"; "" = ":next-part"; J = ":next "; K = ":prev"; }; "view::passthrough" = { "$noinherit" = "true"; "$ex" = ""; "" = ":toggle-key-passthrough"; }; compose = { # Keybindings used when the embedded terminal is not selected in the compose # view "$noinherit" = "true"; "$ex" = ""; "" = ":prev-field"; "" = ":next-field"; "" = ":next-field"; "" = ":prev-tab"; "" = ":next-tab"; }; "compose::editor" = { # Keybindings used when the embedded terminal is selected in the compose view "$noinherit" = "true"; "$ex" = ""; "" = ":prev-field"; "" = ":next-field"; "" = ":prev-tab"; "" = ":next-tab"; }; "compose::review" = { # Keybindings used when reviewing a message to be sent y = ":send "; n = ":abort"; p = ":postpone"; q = ":choose -o d discard abort -o p postpone postpone"; e = ":edit"; a = ":attach"; d = ":detach"; }; terminal = { "$noinherit" = "true"; "$ex" = ""; "" = ":prev-tab"; "" = ":next-tab"; }; }; extraConfig = { ui.sort = "-r date"; ui.timestamp-format = "2006-01-02 15:04"; ui.mouse-enabled = true; ui.spinner = ". , ."; general.unsafe-accounts-conf = true; general.pgp-provider = "gpg"; viewer = {pager = "${pkgs.less}/bin/less -R";}; compose = { address-book-cmd = "khard email --remove-first-line --parsable '%s'"; no-attachment-warning = "(attach|attached|attachments?|anbei|Anhang|angehängt)"; }; filters = { "text/plain" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize"; "text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/calendar"; "text/html" = "${pkgs.aerc}/share/aerc/filters/html"; # Requires w3m, dante # "text/html" = # "${pkgs.aerc}/share/aerc/filters/html | ${pkgs.aerc}/share/aerc/filters/colorize"; # "text/*" = # ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "''; "message/delivery-status" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize"; "message/rfc822" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/share/aerc/filters/colorize"; "application/x-sh" = "${pkgs.bat}/bin/bat -fP -l sh"; }; openers = let as-pdf = pkgs.writers.writeDash "as-pdf" '' d=$(mktemp -d) trap clean EXIT clean() { rm -rf "$d" } ${pkgs.libreoffice}/bin/libreoffice --headless --convert-to pdf "$1" --outdir "$d" ${pkgs.zathura}/bin/zathura "$d"/*.pdf ''; in { "image/*" = "${pkgs.nsxiv}/bin/nsxiv"; "application/pdf" = "${pkgs.zathura}/bin/zathura"; "application/vnd.openxmlformats-officedocument.wordprocessingml.document" = toString as-pdf; "application/vnd.oasis.opendocument.text" = toString as-pdf; "video/*" = "${pkgs.mpv}/bin/mpv"; "audio/*" = "${pkgs.mpv}/bin/mpv"; }; }; templates = { # new_message = "hello!"; }; }; }; }