nixos-config/profiles/basic/email-filters.nix

270 lines
9.3 KiB
Nix

{config, pkgs, lib, ...}:
let
filterToString = (m: f:
if builtins.isString f
then "(${m},contains,${f})"
else if builtins.isList f
then "OR "+(lib.strings.concatStringsSep " OR " (builtins.map (filterToString m) f))
else builtins.throw "Wrong filter content"
);
convertFilters = (filz: builtins.map (fil: {
enabled = true;
type = "17";
name = "Moving emails to folder "+fil.folder;
action = "Move to folder";
actionValue = "imap://mysaa%40hadoly.fr@imap.hadoly.fr/"+(fil.folderEscaped or fil.folder);
condition = filterToString (fil.matching or "all addresses") fil.email;
}) filz);
restFilter = (out: {
enabled = true;
type = "17";
name = "Moving other emails to "+out;
action = "Move to folder";
actionValue = "imap://mysaa%40hadoly.fr@imap.hadoly.fr/INBOX/"+out;
condition = "ALL";
});
rules = [
{
folder = "Assos/AliENS";
email = [
"aliens.discussion@ens-lyon.fr"
"aliens.discussion@listes.ens-lyon.fr"
"azertoutes@listes.ens-lyon.fr"
];
}
{
folder = "Assos/AliENS/CA";
email = [
"aliens.ca@ens-lyon.fr"
"aliens.ca@listes.ens-lyon.fr"
"aliens.contact@ens-lyon.fr"
"aliens.contact@listes.ens-lyon.fr"
];
}
{
folder = "Assos/BuL/Murders";
email = [
"bul.murder.decouverte@ens-lyon.fr"
"bul.murder.decouverte@listes.ens-lyon.fr"
"bul.murder@ens-lyon.fr"
"bul.murder@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Démesures";
folderEscaped = "Assos/D&AOk-mesures";
email = [
"demesures@ens-lyon.fr"
"demesures@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Diffs";
email = [
"fede.diffusion@ens-lyon.fr"
"fede.diffusion@listes.ens-lyon.fr"
"info.elus.etudiants@ens-lyon.fr"
"info.elus.etudiants@listes.ens-lyon.fr"
"bde.diffusion@ens-lyon.fr"
"bde.diffusion@listes.ens-lyon.fr"
"bul.diffusion@ens-lyon.fr"
"bul.diffusion@listes.ens-lyon.fr"
"enverts.diffusion@ens-lyon.fr"
"enverts.diffusion@listes.ens-lyon.fr"
"trensistor.diffusion@ens-lyon.fr"
"trensistor.diffusion@listes.ens-lyon.fr"
"aliens.diffusion@ens-lyon.fr"
"aliens.diffusion@listes.ens-lyon.fr"
"bde.foyer.diffusion@ens-lyon.fr"
"bde.foyer.diffusion@listes.ens-lyon.fr"
"bde.kfet.diffusion@ens-lyon.fr"
"bde.kfet.diffusion@listes.ens-lyon.fr"
"as-ensl@ens-lyon.fr"
"as-ensl@listes.ens-lyon.fr"
"bde.foyer@ens-lyon.fr"
"bde.foyer@listes.ens-lyon.fr"
"asset.diffusion@ens-lyon.fr"
"asset.diffusion@listes.ens-lyon.fr"
"echarde.diffusion@framalistes.org"
"echarde.membres@framalistes.org"
"enverts.enselle@ens-lyon.fr"
"enverts.enselle@listes.ens-lyon.fr"
"enverts.engraines.descartes@ens-lyon.fr"
"enverts.engraines.monod@listes.ens-lyon.fr"
"discourse+noreply@openstreetmap.fr"
"grrrndzero@grrrndzero.org"
"info@cinefac.fr"
"arcensiel.diffusion@ens-lyon.fr"
"arcensiel.diffusion@listes.ens-lyon.fr"
"bde.absurde@ens-lyon.fr"
"bde.absurde@listes.ens-lyon.fr"
"presences.diffusion@ens-lyon.fr"
"presences.diffusion@listes.ens-lyon.fr"
];
}
{
folder = "Assos/ENSeigner";
email = [
"enseigner.tuteurices@ens-lyon.fr"
"enseigner.tuteurices@listes.ens-lyon.fr"
];
}
{
folder = "Assos/ENvertS";
email = [
"enverts.bureau@ens-lyon.fr"
"enverts.bureau@listes.ens-lyon.fr"
];
}
{
folder = "Assos/ENvertS/Framavox";
email = [
"notifications@framavox.org"
];
}
{
folder = "Assos/Fédé";
folderEscaped = "Assos/F&AOk-d&AOk-";
email = [
"fede.ca@ens-lyon.fr"
"fede.ca@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Fédé/Art Total";
folderEscaped = "Assos/F&AOk-d&AOk-/Art Total";
email = [
"fede.art-total@ens-lyon.fr"
"fede.art-total@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Fédé/Bureau";
folderEscaped = "Assos/F&AOk-d&AOk-/Bureau";
email = [
"federation@ens-lyon.fr"
"federation@listes.ens-lyon.fr"
"fede.communications@ens-lyon.fr"
];
}
{
folder = "Assos/Fédé/Informatique";
folderEscaped = "Assos/F&AOk-d&AOk-/Informatique";
email = [
"fede.informatique@ens-lyon.fr"
"fede.informatique@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Fédé/Juridique";
folderEscaped = "Assos/F&AOk-d&AOk-/Juridique";
email = [
"fede.juridique@ens-lyon.fr"
"fede.juridique@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Modération";
folderEscaped = "Assos/Mod&AOk-ration";
email = [
"sympa@listes.ens-lyon.fr"
"sympa-request@listes.ens-lyon.fr"
];
}
{
folder = "Assos/Modération";
folderEscaped = "Assos/Mod&AOk-ration";
email = [
"sympa@listes.ens-lyon.fr"
];
matching = "\\\"reply-to\\\"";
}
{
folder = "Assos/tous-spam";
email = [
"tous.ens@ens-lyon.fr"
"tous.ens@listes.ens-lyon.fr"
"tous.culture@ens-lyon.fr"
"tous.culture@listes.ens-lyon.fr"
"tous.manifestations.scientifiques@ens-lyon.fr"
"tous.manifestations.scientifiques@listes.ens-lyon.fr"
"tous.etudiants@ens-lyon.fr"
"tous.etudiants@listes.ens-lyon.fr"
"tous.normaliens-eleves@ens-lyon.fr"
"tous.normaliens-eleves@listes.ens-lyon.fr"
"culture@ens-lyon.fr"
"culture@listes.ens-lyon.fr"
"information.patrimoine@ens-lyon.fr"
"information.patrimoine@listes.ens-lyon.fr"
"tous.transition.ecologique@ens-lyon.fr"
"tous.transition.ecologique@listes.ens-lyon.fr"
"manifestations.ife@ens-lyon.fr"
"manifestations.ife@listes.ens-lyon.fr"
"cercc@ens-lyon.fr"
"cercc@listes.ens-lyon.fr"
"info.syndicat.cgt@ens-lyon.fr"
"info.syndicat.cgt@listes.ens-lyon.fr"
"info.syndicat.sud@ens-lyon.fr"
"info.syndicat.sud@listes.ens-lyon.fr"
"info.syndicat.cfdt@ens-lyon.fr"
"info.syndicat.cfdt@listes.ens-lyon.fr"
"info.syndicat.snesup-fsu@ens-lyon.fr"
"info.syndicat.snesup-fsu@listes.ens-lyon.fr"
"info.syndicat.sud@ens-lyon.fr"
"info.syndicat.sud@listes.ens-lyon.fr"
"newsletter@national.lescrous.fr"
"infos@national.lescrous.fr"
];
}
{
folder = "Notif";
email = [
"nepasrepondre@credit-cooperatif.coop"
"noreply@github.com"
"no-reply@twitch.tv"
"ne_pas_repondre@sfr.fr"
"expiry@letsencrypt.org"
"info@mail.sncfconnect.com"
"service@paypal.fr"
"purchase-noreply@twitch.tv"
"no-reply@doctolib.fr"
"no-reply@canva.com"
"notifications@transifex.com"
"ne-pas-repondre@inscriptionelectorale.service-public.fr"
"noreply@steampowered.com"
"noreply@connect.sncf"
"no-reply@spotify.com"
"messagerie.leboncoin.fr"
"no.reply@leboncoin.fr"
"nepasrepondre-filesender@renater.fr"
"gitlab@aliens-lyon.fr"
"postman@ulule.com"
"no-reply@accounts.google.com"
"notifications@discord.com"
"help@acct.epicgames.com"
"no-reply+framateam@framasoft.org"
];
}
{
folder = "Etudes";
email = [
"types-announce@lists.seas.upenn.edu"
"types-announce@LISTS.SEAS.UPENN.EDU"
"categories@mq.edu.au"
"ice@framalistes.org"
"cashreadinggroup@listes.ens-lyon.fr"
];
}
];
in {
home-manager.users.mysaa.accounts.email.accounts = {
personal.thunderbird.messageFilters = convertFilters rules ++ [ (restFilter "s@nc") ];
ens.thunderbird.messageFilters = convertFilters rules ++ [ (restFilter "ENS-Lyon") ];
junk.thunderbird.messageFilters = convertFilters rules ++ [ (restFilter "q@nc") ];
google.thunderbird.messageFilters = convertFilters rules ++ [ (restFilter "Google") ];
ecloud.thunderbird.messageFilters = convertFilters rules ++ [ (restFilter "ECloud") ];
hadoly.thunderbird.messageFilters = [ (restFilter "Hadoly") ];
};
}