Added music specialization + formatter + archiver
This commit is contained in:
		
							parent
							
								
									f50bb2e8c3
								
							
						
					
					
						commit
						2abe84b8c2
					
				
							
								
								
									
										44
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										44
									
								
								flake.lock
									
									
									
										generated
									
									
									
								
							@ -39,6 +39,26 @@
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "musnix": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1756852730,
 | 
			
		||||
        "narHash": "sha256-qPere4RBHoZxiEGl8zXU8gjroZg4gkYGEwaAbKmL4vE=",
 | 
			
		||||
        "owner": "musnix",
 | 
			
		||||
        "repo": "musnix",
 | 
			
		||||
        "rev": "7ccc92050e43dc92309396c6f2fe1f542214a242",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "musnix",
 | 
			
		||||
        "repo": "musnix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nix-vscode-extensions": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-utils": "flake-utils",
 | 
			
		||||
@ -79,8 +99,10 @@
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "home-manager": "home-manager",
 | 
			
		||||
        "musnix": "musnix",
 | 
			
		||||
        "nix-vscode-extensions": "nix-vscode-extensions",
 | 
			
		||||
        "nixpkgs": "nixpkgs"
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "treefmt-nix": "treefmt-nix"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "systems": {
 | 
			
		||||
@ -97,6 +119,26 @@
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "treefmt-nix": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1758206697,
 | 
			
		||||
        "narHash": "sha256-/DbPkh6PZOgfueCbs3uzlk4ASU2nPPsiVWhpMCNkAd0=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "treefmt-nix",
 | 
			
		||||
        "rev": "128222dc911b8e2e18939537bed1762b7f3a04aa",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "treefmt-nix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								flake.nix
									
									
									
									
									
								
							@ -9,6 +9,12 @@
 | 
			
		||||
 | 
			
		||||
    nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
 | 
			
		||||
    nix-vscode-extensions.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    treefmt-nix.url = "github:numtide/treefmt-nix";
 | 
			
		||||
    treefmt-nix.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
 | 
			
		||||
    musnix.url = "github:musnix/musnix";
 | 
			
		||||
    musnix.inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs =
 | 
			
		||||
@ -19,7 +25,11 @@
 | 
			
		||||
      mkNixosSystems = lib.mapAttrs (
 | 
			
		||||
        name: modules:
 | 
			
		||||
        lib.nixosSystem {
 | 
			
		||||
          modules = modules ++ [
 | 
			
		||||
          modules = [
 | 
			
		||||
            inputs.musnix.nixosModules.musnix
 | 
			
		||||
          ]
 | 
			
		||||
          ++ modules
 | 
			
		||||
          ++ [
 | 
			
		||||
            {
 | 
			
		||||
              imports = [ (import "${inputs.home-manager}/nixos") ];
 | 
			
		||||
              networking.hostName = name;
 | 
			
		||||
@ -31,7 +41,20 @@
 | 
			
		||||
      );
 | 
			
		||||
    in
 | 
			
		||||
    {
 | 
			
		||||
      formatter.x86_64-linux = inputs.nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
 | 
			
		||||
      formatter.x86_64-linux =
 | 
			
		||||
        inputs.treefmt-nix.lib.mkWrapper (import inputs.nixpkgs { system = "x86_64-linux"; })
 | 
			
		||||
          {
 | 
			
		||||
            projectRootFile = "flake.nix";
 | 
			
		||||
            programs = {
 | 
			
		||||
              nixfmt.enable = true;
 | 
			
		||||
              black.enable = true;
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            settings.formatter.black.options = [
 | 
			
		||||
              "--line-length"
 | 
			
		||||
              "79"
 | 
			
		||||
            ];
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
      nixosConfigurations = mkNixosSystems {
 | 
			
		||||
        polysaa = [
 | 
			
		||||
 | 
			
		||||
@ -91,5 +91,11 @@
 | 
			
		||||
    settings.General.Experimental = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Creates a specialisation for rt kernel
 | 
			
		||||
  specialisation.zik.configuration = {
 | 
			
		||||
    musnix.enable = true;
 | 
			
		||||
    users.users.mysaa.extraGroups = [ "audio" ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "25.05";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -63,6 +63,8 @@
 | 
			
		||||
    nano
 | 
			
		||||
    wget
 | 
			
		||||
    git
 | 
			
		||||
    tree
 | 
			
		||||
    ripgrep
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Some programs need SUID wrappers, can be configured further or are
 | 
			
		||||
 | 
			
		||||
@ -1,269 +1,282 @@
 | 
			
		||||
{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: {
 | 
			
		||||
{
 | 
			
		||||
  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;
 | 
			
		||||
      name = "Moving emails to folder " + fil.folder;
 | 
			
		||||
      action = "Move to folder";
 | 
			
		||||
      actionValue = "imap://mysaa%40hadoly.fr@imap.hadoly.fr/"+(fil.folderEscaped or fil.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: {
 | 
			
		||||
    }) filz
 | 
			
		||||
  );
 | 
			
		||||
  restFilter = (
 | 
			
		||||
    out: {
 | 
			
		||||
      enabled = true;
 | 
			
		||||
      type = "17";
 | 
			
		||||
      name = "Moving other emails to "+out;
 | 
			
		||||
      name = "Moving other emails to " + out;
 | 
			
		||||
      action = "Move to folder";
 | 
			
		||||
      actionValue = "imap://mysaa%40hadoly.fr@imap.hadoly.fr/INBOX/"+out;
 | 
			
		||||
      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"
 | 
			
		||||
          ];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
  );
 | 
			
		||||
  rules = [
 | 
			
		||||
    {
 | 
			
		||||
      folder = "Assos/AliENS";
 | 
			
		||||
      email = [
 | 
			
		||||
        "aliens.discussion@ens-lyon.fr"
 | 
			
		||||
        "aliens.discussion@listes.ens-lyon.fr"
 | 
			
		||||
        "azertoutes@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") ];
 | 
			
		||||
    };
 | 
			
		||||
    }
 | 
			
		||||
    {
 | 
			
		||||
      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") ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										80
									
								
								profiles/graphical/archiver.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								profiles/graphical/archiver.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,80 @@
 | 
			
		||||
import mailbox
 | 
			
		||||
import sys
 | 
			
		||||
from imap_tools import A, MailBox
 | 
			
		||||
from datetime import date
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
MDloc = "/home/mysaa/Globox"
 | 
			
		||||
MD = mailbox.Maildir(MDloc)
 | 
			
		||||
# firstDate = '"1-Sept-2025"'
 | 
			
		||||
firstDate = date(day=1, month=9, year=2025)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parseFolder(folderString):
 | 
			
		||||
    if folderString[0] == 34:  # Double quote
 | 
			
		||||
        folderString = folderString[1:-1]
 | 
			
		||||
    folderz = (
 | 
			
		||||
        folderString.replace(b"&", b"+")
 | 
			
		||||
        .replace(b",", b"/")
 | 
			
		||||
        .decode("utf-7")
 | 
			
		||||
        .split(".")
 | 
			
		||||
    )
 | 
			
		||||
    return folderz
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def sbdify(name):
 | 
			
		||||
    if name == "INBOX":
 | 
			
		||||
        return "Inbox.sbd"  # I have no idea why thunderbird uncapitalizes this
 | 
			
		||||
    return name + ".sbd"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
password = sys.argv[1].strip()
 | 
			
		||||
with MailBox("imap.hadoly.fr", 993).login("mysaa@hadoly.fr", password) as M:
 | 
			
		||||
 | 
			
		||||
    folders = []
 | 
			
		||||
    folderzz = []
 | 
			
		||||
    folderToFolderz = dict()
 | 
			
		||||
    for f in M.folder.list():
 | 
			
		||||
        folders.append(f)
 | 
			
		||||
        print(f)
 | 
			
		||||
 | 
			
		||||
    mdfolders = {"": MD}
 | 
			
		||||
    folders = sorted(folders, key=lambda f: f.name.count(f.delim))
 | 
			
		||||
    for f in folders:
 | 
			
		||||
        print("Checking folder", f)
 | 
			
		||||
        ff = f.name.split(f.delim)
 | 
			
		||||
        folderPath = os.path.join(MDloc, *[sbdify(s) for s in ff[:-1]], ff[-1])
 | 
			
		||||
        if os.path.exists(folderPath):
 | 
			
		||||
            print("Already exists")
 | 
			
		||||
        else:
 | 
			
		||||
            print("Creating the folder", folderPath)
 | 
			
		||||
            os.makedirs(folderPath)
 | 
			
		||||
            os.mkdir(os.path.join(folderPath, "tmp"))
 | 
			
		||||
            os.mkdir(os.path.join(folderPath, "cur"))
 | 
			
		||||
        mdf = mailbox.Maildir(folderPath, create=True)
 | 
			
		||||
        mdfolders[f.name] = mdf
 | 
			
		||||
 | 
			
		||||
    print("Now filling the emails")
 | 
			
		||||
    for f in folders:
 | 
			
		||||
        mdfolder = mdfolders[f.name]
 | 
			
		||||
        M.folder.set(f.name)
 | 
			
		||||
        uids = M.uids(
 | 
			
		||||
            A(date_lt=firstDate, seen=True, flagged=False, draft=False)
 | 
			
		||||
        )
 | 
			
		||||
        print(
 | 
			
		||||
            "Moving",
 | 
			
		||||
            len(uids),
 | 
			
		||||
            "from folder",
 | 
			
		||||
            f.name,
 | 
			
		||||
            "out of",
 | 
			
		||||
            len(M.uids(A(all=True))),
 | 
			
		||||
        )
 | 
			
		||||
        for u in uids:
 | 
			
		||||
            msg = next(M.fetch(A(uid=u)))
 | 
			
		||||
            msg = mailbox.MaildirMessage(msg.obj.as_bytes())
 | 
			
		||||
            msg.set_subdir("cur")
 | 
			
		||||
            msg.set_flags("S")
 | 
			
		||||
            mdfolder.add(msg)
 | 
			
		||||
 | 
			
		||||
            # Then remove the message
 | 
			
		||||
            M.delete(u)
 | 
			
		||||
@ -10,7 +10,7 @@
 | 
			
		||||
    elisa
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  home-manager.users.mysaa.home.file.".config/kdeglobals".text = lib.generators.toINI {} {
 | 
			
		||||
  home-manager.users.mysaa.home.file.".config/kdeglobals".text = lib.generators.toINI { } {
 | 
			
		||||
    KDE = {
 | 
			
		||||
      SingleClick = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
@ -4,8 +4,8 @@
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
  let
 | 
			
		||||
    clean-nixos-git-check-script = pkgs.writeScript "clean-nixos-git-check" ''
 | 
			
		||||
let
 | 
			
		||||
  clean-nixos-git-check-script = pkgs.writers.writeBash "clean-nixos-git-check" ''
 | 
			
		||||
    if [ -z "$(${pkgs.git}/bin/git -C /etc/nixos status -u --porcelain)" ]
 | 
			
		||||
    then
 | 
			
		||||
      echo "/etc/nixos is clean !"
 | 
			
		||||
@ -15,7 +15,7 @@
 | 
			
		||||
      exit 0
 | 
			
		||||
    fi
 | 
			
		||||
  '';
 | 
			
		||||
    in
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
@ -98,7 +98,7 @@
 | 
			
		||||
      };
 | 
			
		||||
      Service = {
 | 
			
		||||
        Type = "oneshot";
 | 
			
		||||
        ExecStart = "${pkgs.bash}/bin/bash ${clean-nixos-git-check-script}";
 | 
			
		||||
        ExecStart = "${clean-nixos-git-check-script}";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    timers.check-nixos-git-clean = {
 | 
			
		||||
@ -117,6 +117,4 @@
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,115 +4,114 @@
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
  let globox-id = "b446944a47d39ae969ebe27f81cf2d8963df7a04dd40e31e61c7c2ecc1ac7437";
 | 
			
		||||
let
 | 
			
		||||
  globox-id = "b446944a47d39ae969ebe27f81cf2d8963df7a04dd40e31e61c7c2ecc1ac7437";
 | 
			
		||||
  archiver = pkgs.writers.writePython3 "mail-archiver" {
 | 
			
		||||
    libraries = with pkgs.python3Packages; [ imap-tools ];
 | 
			
		||||
  } (builtins.readFile ./archiver.py);
 | 
			
		||||
 | 
			
		||||
  in {
 | 
			
		||||
    home-manager.users.mysaa.accounts.email.accounts = {
 | 
			
		||||
        "hadoly".thunderbird.enable = true;
 | 
			
		||||
        "personal".thunderbird.enable = true;
 | 
			
		||||
        "ens".thunderbird.enable = true;
 | 
			
		||||
        "junk".thunderbird.enable = true;
 | 
			
		||||
        "google".thunderbird.enable = true;
 | 
			
		||||
        "bernard".thunderbird.enable = true;
 | 
			
		||||
        "dmesures".thunderbird.enable = true;
 | 
			
		||||
        "ecloud".thunderbird.enable = true;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.mysaa.accounts.email.accounts = {
 | 
			
		||||
    "hadoly".thunderbird.enable = true;
 | 
			
		||||
    "personal".thunderbird.enable = true;
 | 
			
		||||
    "ens".thunderbird.enable = true;
 | 
			
		||||
    "junk".thunderbird.enable = true;
 | 
			
		||||
    "google".thunderbird.enable = true;
 | 
			
		||||
    "bernard".thunderbird.enable = true;
 | 
			
		||||
    "dmesures".thunderbird.enable = true;
 | 
			
		||||
    "ecloud".thunderbird.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  home-manager.users.mysaa.programs.thunderbird = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.thunderbird.override {
 | 
			
		||||
      extraPolicies.ExtensionSettings = {
 | 
			
		||||
        "localfolder@philoux.eu" = {
 | 
			
		||||
          install_url = "https://addons.thunderbird.net/user-media/addons/_attachments/90003/localfolders-4.2.2-tb.xpi?filehash=sha256%3A71d499b55b360769447e9f08536ee557b0419e84d5914e79c18558d86a21fbd9";
 | 
			
		||||
          installation_mode = "force_installed";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    home-manager.users.mysaa.programs.thunderbird = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        package = pkgs.thunderbird.override {
 | 
			
		||||
        extraPolicies.ExtensionSettings = {
 | 
			
		||||
            "localfolder@philoux.eu" = {
 | 
			
		||||
            install_url = "https://addons.thunderbird.net/user-media/addons/_attachments/90003/localfolders-4.2.2-tb.xpi?filehash=sha256%3A71d499b55b360769447e9f08536ee557b0419e84d5914e79c18558d86a21fbd9";
 | 
			
		||||
            installation_mode = "force_installed";
 | 
			
		||||
            };
 | 
			
		||||
        };
 | 
			
		||||
        };
 | 
			
		||||
        profiles.default = {
 | 
			
		||||
        isDefault = true;
 | 
			
		||||
        accountsOrder = [
 | 
			
		||||
            "hadoly"
 | 
			
		||||
            "dmesures"
 | 
			
		||||
            "bernard"
 | 
			
		||||
            "ens"
 | 
			
		||||
            "account_${globox-id}"
 | 
			
		||||
            "personal"
 | 
			
		||||
            "junk"
 | 
			
		||||
            "ecloud"
 | 
			
		||||
            "google"
 | 
			
		||||
        ];
 | 
			
		||||
        settings =
 | 
			
		||||
            {
 | 
			
		||||
            "mail.account.account_${globox-id}.server" = "server_${globox-id}";
 | 
			
		||||
            "mail.server.server_${globox-id}.directory" = "/home/mysaa/Globox";
 | 
			
		||||
    #user_pref("mail.server.server1.directory-rel", "[ProfD]../../../Globox");
 | 
			
		||||
            "mail.server.server_${globox-id}.hostname" = "globox";
 | 
			
		||||
            "mail.server.server_${globox-id}.name" = "globox";
 | 
			
		||||
            "mail.server.server_${globox-id}.storeContractID" = "@mozilla.org/msgstore/maildirstore;1";
 | 
			
		||||
            "mail.server.server_${globox-id}.type" = "none";
 | 
			
		||||
            "mail.server.server_${globox-id}.userName" = "nobody";
 | 
			
		||||
    profiles.default = {
 | 
			
		||||
      isDefault = true;
 | 
			
		||||
      accountsOrder = [
 | 
			
		||||
        "hadoly"
 | 
			
		||||
        "dmesures"
 | 
			
		||||
        "bernard"
 | 
			
		||||
        "ens"
 | 
			
		||||
        "account_${globox-id}"
 | 
			
		||||
        "personal"
 | 
			
		||||
        "junk"
 | 
			
		||||
        "ecloud"
 | 
			
		||||
        "google"
 | 
			
		||||
      ];
 | 
			
		||||
      settings = {
 | 
			
		||||
        "mail.account.account_${globox-id}.server" = "server_${globox-id}";
 | 
			
		||||
        "mail.server.server_${globox-id}.directory" = "/home/mysaa/Globox";
 | 
			
		||||
        #user_pref("mail.server.server1.directory-rel", "[ProfD]../../../Globox");
 | 
			
		||||
        "mail.server.server_${globox-id}.hostname" = "globox";
 | 
			
		||||
        "mail.server.server_${globox-id}.name" = "globox";
 | 
			
		||||
        "mail.server.server_${globox-id}.storeContractID" = "@mozilla.org/msgstore/maildirstore;1";
 | 
			
		||||
        "mail.server.server_${globox-id}.type" = "none";
 | 
			
		||||
        "mail.server.server_${globox-id}.userName" = "nobody";
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            // lib.attrsets.concatMapAttrs (
 | 
			
		||||
            _: account:
 | 
			
		||||
            lib.optionalAttrs (account.passwordCommand != null) (
 | 
			
		||||
                let
 | 
			
		||||
                id = builtins.hashString "sha256" account.name;
 | 
			
		||||
                command = lib.concatStringsSep " " account.passwordCommand;
 | 
			
		||||
                passwordScript = pkgs.writeShellScript "get-password.sh" ''
 | 
			
		||||
                    echo "Got command $1" >> /tmp/thunderpasswordget
 | 
			
		||||
                    ${command} | ${pkgs.netcat}/bin/nc -w 0 -U $1
 | 
			
		||||
                '';
 | 
			
		||||
                in
 | 
			
		||||
                lib.optionalAttrs (account.smtp != null) {
 | 
			
		||||
                "mail.smtpserver.smtp_${id}.passwordCommand" = toString passwordScript;
 | 
			
		||||
                }
 | 
			
		||||
                // lib.optionalAttrs (account.imap != null) {
 | 
			
		||||
                "mail.server.server_${id}.passwordCommand" = toString passwordScript;
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
            ) config.home-manager.users.mysaa.accounts.email.accounts;
 | 
			
		||||
        };
 | 
			
		||||
      }
 | 
			
		||||
      // lib.attrsets.concatMapAttrs (
 | 
			
		||||
        _: account:
 | 
			
		||||
        lib.optionalAttrs (account.passwordCommand != null) (
 | 
			
		||||
          let
 | 
			
		||||
            id = builtins.hashString "sha256" account.name;
 | 
			
		||||
            command = lib.concatStringsSep " " account.passwordCommand;
 | 
			
		||||
            passwordScript = pkgs.writeShellScript "get-password.sh" ''
 | 
			
		||||
              echo "Got command $1" >> /tmp/thunderpasswordget
 | 
			
		||||
              ${command} | ${pkgs.netcat}/bin/nc -w 0 -U $1
 | 
			
		||||
            '';
 | 
			
		||||
          in
 | 
			
		||||
          lib.optionalAttrs (account.smtp != null) {
 | 
			
		||||
            "mail.smtpserver.smtp_${id}.passwordCommand" = toString passwordScript;
 | 
			
		||||
          }
 | 
			
		||||
          // lib.optionalAttrs (account.imap != null) {
 | 
			
		||||
            "mail.server.server_${id}.passwordCommand" = toString passwordScript;
 | 
			
		||||
          }
 | 
			
		||||
        )
 | 
			
		||||
      ) config.home-manager.users.mysaa.accounts.email.accounts;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
    #  home-manager.users.mysaa.nixpkgs.overlays = [
 | 
			
		||||
    #    (final: prev: {
 | 
			
		||||
    #      thunderbird-unwrapped = prev.thunderbird-unwrapped.overrideAttrs {
 | 
			
		||||
    #        patches = (prev.thunderbird-unwrapped.patches or [ ]) ++ [
 | 
			
		||||
    #          ../../packages/add_passwordcommand_smtp.patch
 | 
			
		||||
    #          ../../packages/add_passwordcommand_imap.patch
 | 
			
		||||
    #        ];
 | 
			
		||||
    #      };
 | 
			
		||||
    #    })
 | 
			
		||||
    #  ];
 | 
			
		||||
    /*security.pam.services.dovecot2 = {};
 | 
			
		||||
    services.dovecot2 = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        enablePAM = false;
 | 
			
		||||
        extraConfig = ''
 | 
			
		||||
        protocols = imap
 | 
			
		||||
        auth_mechanisms = plain login
 | 
			
		||||
        service imap-login {
 | 
			
		||||
            inet_listener imap {
 | 
			
		||||
            port = 10143
 | 
			
		||||
            address = 127.0.0.1
 | 
			
		||||
            }
 | 
			
		||||
            inet_listener imaps {
 | 
			
		||||
            port = 10993
 | 
			
		||||
            address = 127.0.0.1
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        log_path = /home/mysaa/.local/dovecot.log
 | 
			
		||||
        passdb {
 | 
			
		||||
            driver = passwd-file
 | 
			
		||||
            args = /etc/dovecot-passwd
 | 
			
		||||
        }
 | 
			
		||||
        userdb {
 | 
			
		||||
            driver = passwd
 | 
			
		||||
        }
 | 
			
		||||
        mail_location = maildir:/home/mysaa/Globox/:LAYOUT=fs
 | 
			
		||||
        '';
 | 
			
		||||
  #  home-manager.users.mysaa.nixpkgs.overlays = [
 | 
			
		||||
  #    (final: prev: {
 | 
			
		||||
  #      thunderbird-unwrapped = prev.thunderbird-unwrapped.overrideAttrs {
 | 
			
		||||
  #        patches = (prev.thunderbird-unwrapped.patches or [ ]) ++ [
 | 
			
		||||
  #          ../../packages/add_passwordcommand_smtp.patch
 | 
			
		||||
  #          ../../packages/add_passwordcommand_imap.patch
 | 
			
		||||
  #        ];
 | 
			
		||||
  #      };
 | 
			
		||||
  #    })
 | 
			
		||||
  #  ];
 | 
			
		||||
 | 
			
		||||
  home-manager.users.mysaa.systemd.user = {
 | 
			
		||||
    services.mail-archiver = {
 | 
			
		||||
      Unit = {
 | 
			
		||||
        Description = "Archives emails from Hadoly account to Globox";
 | 
			
		||||
      };
 | 
			
		||||
      Service = {
 | 
			
		||||
        Type = "oneshot";
 | 
			
		||||
        ExecStart = "${archiver} $(cat /run/secrets/pass/hadoly_password)";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    environment.etc.dovecot-passwd.text = ''
 | 
			
		||||
        mysaa:{plain}aaaaa
 | 
			
		||||
    */
 | 
			
		||||
    timers.mail-archiver = {
 | 
			
		||||
      Unit = {
 | 
			
		||||
        Description = "Weekly archiving of emails";
 | 
			
		||||
      };
 | 
			
		||||
      Timer = {
 | 
			
		||||
        OnCalendar = "Tue *-*-* 13:00:00";
 | 
			
		||||
        Persistent = "true";
 | 
			
		||||
        Unit = "mail-archiver.service";
 | 
			
		||||
      };
 | 
			
		||||
      Install = {
 | 
			
		||||
        WantedBy = [ "timers.target" ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user