117 lines
3.1 KiB
Nix
117 lines
3.1 KiB
Nix
{
|
|
osConfig,
|
|
config,
|
|
pkgs,
|
|
...
|
|
}: {
|
|
config = let
|
|
extraMailboxes = ["Archive" "Drafts" "Junk" "Sent" "Trash"];
|
|
in {
|
|
accounts.email = {
|
|
maildirBasePath = config.xdg.userDirs.extraConfig.XDG_MAIL_DIR;
|
|
accounts = {
|
|
notashelf = let
|
|
gpgKey = "0xBA46BCC36E912922";
|
|
name = "NotAShelf";
|
|
in {
|
|
primary = true;
|
|
address = "raf@notashelf.dev";
|
|
aliases = ["me@notashelf.dev"];
|
|
userName = "raf@notashelf.dev";
|
|
realName = name; # very real, I know
|
|
passwordCommand = ''
|
|
# this is a really bad way of getting the password
|
|
# but home-manager does not provide a passwordFile option
|
|
tail ${osConfig.age.secrets.client-email.path} -n 1
|
|
'';
|
|
|
|
signature = {
|
|
showSignature = "append";
|
|
text = ''
|
|
--
|
|
${name}
|
|
|
|
Want to use GPG encryption with me? Try my GPG key:
|
|
[${gpgKey}](https://github.com/notashelf.gpg)
|
|
'';
|
|
};
|
|
|
|
folders = {
|
|
inbox = "Inbox";
|
|
drafts = "Drafts";
|
|
sent = "Sent";
|
|
trash = "Trash";
|
|
};
|
|
|
|
imap = {
|
|
host = "notashelf.dev";
|
|
tls.enable = true;
|
|
};
|
|
|
|
smtp = {
|
|
host = "notashelf.dev";
|
|
tls.enable = true;
|
|
};
|
|
|
|
gpg = {
|
|
key = gpgKey;
|
|
signByDefault = true;
|
|
};
|
|
|
|
msmtp.enable = true;
|
|
mbsync = {
|
|
enable = true;
|
|
create = "maildir"; # funny as it is, this is not a path - it's an instruction
|
|
expunge = "both";
|
|
};
|
|
|
|
neomutt = {
|
|
enable = true;
|
|
inherit extraMailboxes;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
systemd.user = {
|
|
timers."mbsync" = {
|
|
Unit.Description = "Automatic mbsync synchronization";
|
|
Timer = {
|
|
OnBootSec = "30";
|
|
OnUnitActiveSec = "5m";
|
|
};
|
|
Install.WantedBy = ["timers.target"];
|
|
};
|
|
|
|
services."genFolders" = {
|
|
Unit.Description = "Generate folders for email accounts";
|
|
Install.WantedBy = ["multi-user.target"];
|
|
Service = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStart = let
|
|
script = pkgs.writeShellApplication {
|
|
name = "genFolders";
|
|
text = ''
|
|
# move to the current user's home directory
|
|
# FIXME: pretty sure this can also be set as the service's runtime dir
|
|
cd "${config.home.homeDirectory}/Mail"
|
|
|
|
# iterate over dirs and create those that do not exist
|
|
for dir in ${toString extraMailboxes}; do
|
|
if [ ! -d "$dir" ]; then
|
|
echo -en "$dir does not exist, creating...\n";
|
|
mkdir "$dir"
|
|
echo "Done creating $dir"
|
|
fi
|
|
done
|
|
'';
|
|
};
|
|
in "${script}/bin/genFolders";
|
|
|
|
# set runtime dir to the current user's home directory
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|