77 lines
2.2 KiB
Nix
77 lines
2.2 KiB
Nix
# This file configures offlineimap, notmuch and MSMTP.
|
|
#
|
|
# Some manual configuration is required the first time this is
|
|
# applied:
|
|
#
|
|
# 1. Credential setup.
|
|
# 2. Linking of MSMTP config (ln -s /etc/msmtprc ~/.msmtprc)
|
|
# 3. Linking of notmuch config (ln -s /etc/notmuch-config ~/.notmuch-config)
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
let offlineImapConfig = pkgs.writeText "offlineimaprc"
|
|
(builtins.readFile ./dotfiles/offlineimaprc);
|
|
|
|
msmtpConfig = pkgs.writeText "msmtprc"
|
|
(builtins.readFile ./dotfiles/msmtprc);
|
|
|
|
notmuchConfig = pkgs.writeText "notmuch-config"
|
|
(builtins.readFile ./dotfiles/notmuch-config);
|
|
|
|
tagConfig = pkgs.writeText "notmuch-tags" ''
|
|
# Tag emacs-devel mailing list:
|
|
-inbox +emacs-devel -- to:emacs-devel@gnu.org OR cc:emacs-devel@gnu.org
|
|
|
|
# Tag nix-devel mailing list & discourse:
|
|
-inbox +nix-devel -- to:nix-devel@googlegroups.com OR from:nixos1@discoursemail.com
|
|
|
|
# Tag my own mail (from other devices) as sent:
|
|
-inbox +sent -- from:mail@tazj.in
|
|
|
|
# Drafts are always read, duh.
|
|
-unread -- tag:draft
|
|
'';
|
|
|
|
notmuchIndex = pkgs.writeShellScriptBin "notmuch-index" ''
|
|
echo "Indexing new mails in notmuch"
|
|
|
|
# Index new mail
|
|
${pkgs.notmuch}/bin/notmuch new
|
|
|
|
# Apply tags
|
|
cat ${tagConfig} | ${pkgs.notmuch}/bin/notmuch tag --batch
|
|
|
|
echo "Done indexing new mails"
|
|
'';
|
|
in {
|
|
# Enable OfflineIMAP timer & service:
|
|
systemd.user.timers.offlineimap = {
|
|
description = "OfflineIMAP timer";
|
|
wantedBy = [ "timers.target" ];
|
|
|
|
timerConfig = {
|
|
Unit = "offlineimap.service";
|
|
OnCalendar = "*:0/2"; # every 2 minutes
|
|
Persistent = "true"; # persist timer state after reboots
|
|
};
|
|
};
|
|
|
|
systemd.user.services.offlineimap = {
|
|
description = "OfflineIMAP service";
|
|
path = with pkgs; [ pass notmuch ];
|
|
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.offlineimap}/bin/offlineimap -u syslog -o -c ${offlineImapConfig}";
|
|
ExecStartPost = "${notmuchIndex}/bin/notmuch-index";
|
|
TimeoutStartSec = "2min";
|
|
};
|
|
};
|
|
|
|
# Link configuration files to /etc/ (from where they will be linked
|
|
# further):
|
|
environment.etc = {
|
|
"msmtprc".source = msmtpConfig;
|
|
"notmuch-config".source = notmuchConfig;
|
|
};
|
|
}
|