79 lines
2.5 KiB
Nix
79 lines
2.5 KiB
Nix
{
|
|
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
|
|
'';
|
|
};
|
|
}
|