{ pkgs, lib, config, dots, ... }: { imports = [ ./mailcap.nix ]; options.custom.email = with lib; { enable = mkEnableOption "Enable email"; davmail = mkEnableOption "Enable DavMail"; mbsync = mkEnableOption "Enable Mbsync"; neomutt = mkEnableOption "Enable NeoMutt"; }; config = lib.mkIf config.custom.email.enable { # DavMail service (Exchange gateway) services.davmail = { enable = config.custom.email.davmail; configFile = "${dots}/config/davmail/davmail.properties"; }; # Mbsync service (mail sync) services.mbsync = { enable = config.custom.email.mbsync; configFile = "${dots}/config/mbsync/mbsyncrc"; frequency = "*:0/1"; }; # Install mail-related packages home.packages = with pkgs; [ isync # mbsync msmtp sops # for password decryption age # for sops age backend ]; # Symlink config files xdg.configFile = { # msmtp config "msmtp/config".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/msmtp/config"; # neomutt configs "neomutt/neomuttrc".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/neomuttrc"; "neomutt/keybinds".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/keybinds"; "neomutt/colors".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/colors"; "neomutt/accounts/personal".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/accounts/personal"; "neomutt/accounts/uchicago".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/accounts/uchicago"; "neomutt/signatures/personal".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/signatures/personal"; "neomutt/signatures/uchicago".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/neomutt/signatures/uchicago"; # isync/mbsync config (some tools look here) "isyncrc".source = config.lib.file.mkOutOfStoreSymlink "${dots}/config/mbsync/mbsyncrc"; }; # neomutt program (for the package) programs.neomutt = lib.mkIf config.custom.email.neomutt { enable = true; }; # Create mail directories home.activation.createMailDirs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' mkdir -p ~/mail/personal/Inbox mkdir -p ~/mail/uchicago/Inbox mkdir -p ~/.cache/neomutt/headers mkdir -p ~/.cache/neomutt/messages mkdir -p ~/.local/state ''; }; }