1
Files
flake-nixinator/home/modules/email.nix
2022-11-09 23:17:19 +01:00

136 lines
3.7 KiB
Nix

# Example: https://beb.ninja/post/email/
# Example: https://sbr.pm/configurations/mails.html
# NOTE: The passwords must exist in kwallet
# TODO: Emacs mail config
{ config, nixosConfig, lib, mylib, pkgs, ... }:
with lib;
with mylib.modules;
let
cfg = config.modules.email;
in {
options.modules.email = {
enable = mkEnableOpt "Email";
kmail = {
enable = mkEnableOpt "Kmail";
autostart = mkEnableOpt "Autostart Kmail";
};
};
# TODO: Add Maildir to nextcloud sync
config = mkIf cfg.enable {
home.packages = with pkgs; builtins.concatLists [
(optionals cfg.kmail.enable [ kmail ])
];
home.file = mkMerge [
(optionalAttrs cfg.kmail.autostart {
".config/autostart/org.kde.kmail2.desktop".source = mkIf cfg.kmail.autostart ../../config/autostart/org.kde.kmail2.desktop;
})
];
programs = {
mbsync.enable = true; # isync package
msmtp.enable = true;
# Run notmuch new to index all new mail
notmuch = {
enable = true;
hooks = {
# When running notmuch new all channels will be syncronized by mbsync
preNew = "mbsync --all";
};
};
};
# TODO: imapnotify can't parse the configuration, HM bug?
services.imapnotify.enable = true;
accounts.email.accounts = {
urpost = {
address = "tobi@urpost.de";
userName = "tobi@urpost.de";
realName = "Christoph Urlacher";
signature.showSignature = "none";
imap.host = "mail.zeus08.de";
imap.port = 993;
smtp.host = "mail.zeus08.de";
smtp.port = 465;
passwordCommand = "kwallet-query -f email -r urpost kdewallet";
mbsync = { # Imap
enable = true;
create = "maildir";
};
msmtp.enable = true; # Smtp
notmuch.enable = true;
imapnotify.enable = true;
imapnotify.onNotify = {
mail = "${pkgs.notmuch}/bin/notmuch new && ${pkgs.libnotify}/bin/notify-send 'New mail arrived on Urpost'";
};
primary = true;
};
hhu = {
address = "christoph.urlacher@hhu.de";
userName = "churl100";
realName = "Christoph Urlacher";
signature.showSignature = "none";
imap.host = "mail.hhu.de";
imap.port = 993;
smtp.host = "mail.hhu.de";
smtp.port = 465;
passwordCommand = "kwallet-query -f email -r hhu kdewallet";
mbsync = { # Imap
enable = true;
create = "maildir";
};
msmtp.enable = true; # Smtp
notmuch.enable = true;
imapnotify.enable = true;
imapnotify.onNotify = {
mail = "${pkgs.notmuch}/bin/notmuch new && ${pkgs.libnotify}/bin/notify-send 'New mail arrived on HHU'";
};
primary = false;
};
# TODO: Setup the correct groups/patterns
gmail = {
address = "tobiasmustermann529@gmail.com";
userName = "tobiasmustermann529@gmail.com";
realName = "Christoph Urlacher";
signature.showSignature = "none";
flavor = "gmail.com";
# NOTE: Uses Gmail app password
passwordCommand = "kwallet-query -f email -r gmail kdewallet";
mbsync = { # Imap
enable = true;
create = "maildir";
patterns = ["*" "![Gmail]*" "[Gmail]/Sent Mail" "[Gmail]/Starred" "[Gmail]/All Mail"]; # Only sync inbox
};
msmtp.enable = true; # Smtp
notmuch.enable = true;
imapnotify.enable = true;
imapnotify.onNotify = {
mail = "${pkgs.notmuch}/bin/notmuch new && ${pkgs.libnotify}/bin/notify-send 'New mail arrived on GMail'";
};
primary = false;
};
};
};
}