mirror of
https://github.com/kmein/niveum
synced 2026-03-19 11:31:09 +01:00
feat(mail): configure notmuch
This commit is contained in:
@@ -1,5 +1,31 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
|
generateTaggingScript = filters:
|
||||||
|
let template = index: { tags, query, message ? "tagging ${query} -> ${lib.concatStringsSep " " tags}", ... }:
|
||||||
|
let
|
||||||
|
command = ''
|
||||||
|
${pkgs.notmuch}/bin/notmuch tag ${lib.concatStringsSep " " tags} -- "${query}"
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
|
echo '${message}'
|
||||||
|
${command}
|
||||||
|
''; in lib.concatStringsSep "\n" (lib.imap0 template filters);
|
||||||
|
|
||||||
|
taggingConfig = [
|
||||||
|
{
|
||||||
|
query = "from:nebenan.de";
|
||||||
|
tags = [ "-inbox" "-unread" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
query = "subject:fd-noti";
|
||||||
|
tags = [ "-inbox -unread" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
query = "subject:miaEngiadina AND subject:\"PR run failed\"";
|
||||||
|
tags = [ "+deleted" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
pass = id: "${pkgs.pass}/bin/pass ${id}";
|
pass = id: "${pkgs.pass}/bin/pass ${id}";
|
||||||
enableDefaults = lib.recursiveUpdate {
|
enableDefaults = lib.recursiveUpdate {
|
||||||
mbsync = {
|
mbsync = {
|
||||||
@@ -19,7 +45,18 @@ let
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
environment.systemPackages = [ pkgs.neomutt pkgs.haskellPackages.much pkgs.notmuch ];
|
environment.systemPackages = [
|
||||||
|
pkgs.neomutt
|
||||||
|
pkgs.haskellPackages.much
|
||||||
|
(pkgs.writers.writeDashBin "fetch-mail" ''
|
||||||
|
${pkgs.isync}/bin/mbsync --all
|
||||||
|
${pkgs.notmuch}/bin/notmuch new
|
||||||
|
'')
|
||||||
|
(pkgs.writers.writeDashBin "notmuch-rm-deleted" ''
|
||||||
|
${pkgs.notmuch}/bin/notmuch search --output files --format=text0 tag:deleted | ${pkgs.findutils}/bin/xargs -r0 rm
|
||||||
|
${pkgs.notmuch}/bin/notmuch new
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
|
||||||
home-manager.users.me = let maildir = "${config.users.users.me.home}/mail";
|
home-manager.users.me = let maildir = "${config.users.users.me.home}/mail";
|
||||||
in {
|
in {
|
||||||
@@ -509,6 +546,11 @@ in {
|
|||||||
|
|
||||||
programs.msmtp.enable = true;
|
programs.msmtp.enable = true;
|
||||||
programs.mbsync.enable = true;
|
programs.mbsync.enable = true;
|
||||||
programs.notmuch.enable = false;
|
programs.notmuch = {
|
||||||
|
enable = true;
|
||||||
|
new.tags = [ "unread" "inbox" ];
|
||||||
|
search.excludeTags = [ "deleted" "spam" ];
|
||||||
|
hooks.postNew = generateTaggingScript taggingConfig;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user