nix/home/email/default.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
'';
};
}