{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") ]; }; }