{ pkgs, secrets, ... }: let primaryAddress = "chris@thesogu.com"; in { home.packages = with pkgs; [mu]; programs.mu.enable = true; programs.msmtp.enable = true; programs.mbsync = { enable = true; extraConfig = '' CopyArrivalDate yes ''; groups = { personal-inboxes = { "${primaryAddress}" = []; }; }; }; services.mbsync = { enable = true; frequency = "*:0/10"; postExec = "${pkgs.mu}/bin/mu index"; }; # TODO create systemd oneshot job to run `mbsync --all` # and mu init # and mu index # so new systems are auto-setup # without having to run those commands manually accounts.email.accounts = { "${primaryAddress}" = { address = primaryAddress; userName = primaryAddress; realName = "Chris Cummings"; primary = true; mbsync = { enable = true; create = "both"; expunge = "both"; remove = "both"; extraConfig.account.PipelineDepth = 50; }; msmtp.enable = true; imap.host = "imap.fastmail.com"; smtp.host = "smtp.fastmail.com"; passwordCommand = let name = "mbsync-password-command"; in "${pkgs.writeShellApplication { inherit name; runtimeInputs = [pkgs.coreutils]; text = "cat ${secrets.fastmail_password.path}"; }}/bin/${name}"; }; }; }