{ config
, lib
, pkgs
, ...
}:

with lib;
let
  cfg = config.my.email;
  name = "Moritz BÃ¶hme";
  email = "mail@moritzboeh.me";
  mailDirectory = "/home/moritz/.mail";
in
{
  options.my.email = {
    enable = mkOption {
      default = false;
      type = types.bool;
      example = true;
    };
    passwordFile = mkOption {
      default = null;
      type = types.path;
      description = "File containing the email password.";
    };
  };

  config = mkIf cfg.enable {
    # Protonbridge Setup
    environment.systemPackages = with pkgs; [ protonmail-bridge ];
    systemd.user.services.protonmail-bridge = {
      description = "Protonmail Bridge";
      enable = true;
      script = "${pkgs.protonmail-bridge}/bin/protonmail-bridge --log-level debug";
      path = [
        pkgs.gnome3.gnome-keyring
      ]; # HACK: https://github.com/ProtonMail/proton-bridge/issues/176
      wantedBy = [ "graphical-session.target" ];
      partOf = [ "graphical-session.target" ];
    };
    age.secrets.email = {
      file = cfg.passwordFile;
      owner = "1000";
    };

    # Email Applications
    home-manager.users.moritz.home.packages = with pkgs; [ thunderbird ];
    networking.firewall.allowedTCPPorts = [ 33728 1025 1143 ];
  };
}
