mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-22 10:19:39 +01:00
I've started seeing $HOME/log $HOME/.msmtp.queue.log populated after using msmtp via neomutt. Although the latter is not, the former is a bit annoying. Home-manager already tries to avoids this 1, so I was curious to why this occured. Interestingly this didn't happen until a month ago, so I've tried to git blame my way out of the problem both on my configuration and on upstream home-manager however I didn't find a fitting change on the suspected dates. Home-manager uses2 msmtpq script3 to send emails through which manages also the queue of mails to be sent. As stated on upstream source of the script 4, it looks for MSMTPQ_Q and MSMTPQ_LOG variables to decide where to https://git.marlam.de/gitweb/?p=msmtp.git;a=blob_plain;f=scripts/msmtpq/msmtpq;hb=HEAD
108 lines
2.8 KiB
Nix
108 lines
2.8 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) mkOption optionalAttrs types;
|
|
|
|
cfg = config.programs.msmtp;
|
|
|
|
msmtpAccounts = lib.filter (a: a.msmtp.enable) (lib.attrValues config.accounts.email.accounts);
|
|
|
|
onOff = p: if p then "on" else "off";
|
|
|
|
accountStr =
|
|
account:
|
|
with account;
|
|
lib.concatStringsSep "\n" (
|
|
[ "account ${name}" ]
|
|
++ lib.mapAttrsToList (n: v: n + " " + v) (
|
|
{
|
|
host = smtp.host;
|
|
from = address;
|
|
auth = "on";
|
|
user = userName;
|
|
tls = onOff smtp.tls.enable;
|
|
tls_starttls = onOff smtp.tls.useStartTls;
|
|
}
|
|
// optionalAttrs (msmtp.tls.fingerprint != null) {
|
|
tls_fingerprint = msmtp.tls.fingerprint;
|
|
}
|
|
// optionalAttrs (smtp.port != null) { port = toString smtp.port; }
|
|
// optionalAttrs (smtp.tls.certificatesFile != null) {
|
|
tls_trust_file = smtp.tls.certificatesFile;
|
|
}
|
|
// optionalAttrs (passwordCommand != null) {
|
|
passwordeval = toString passwordCommand;
|
|
}
|
|
// msmtp.extraConfig
|
|
)
|
|
++ lib.optional primary "account default : ${name}"
|
|
++ map (alias: ''
|
|
|
|
account ${alias} : ${name}
|
|
from ${alias}
|
|
'') aliases
|
|
);
|
|
|
|
configFile = mailAccounts: ''
|
|
# Generated by Home Manager.
|
|
|
|
${cfg.extraConfig}
|
|
|
|
${lib.concatStringsSep "\n\n" (map accountStr mailAccounts)}
|
|
|
|
${cfg.extraAccounts}
|
|
'';
|
|
|
|
in
|
|
{
|
|
|
|
options = {
|
|
programs.msmtp = {
|
|
enable = lib.mkEnableOption "msmtp";
|
|
|
|
package = lib.mkPackageOption pkgs "msmtp" { };
|
|
|
|
extraConfig = mkOption {
|
|
type = types.lines;
|
|
default = "";
|
|
description = ''
|
|
Extra configuration lines to add to {file}`~/.msmtprc`.
|
|
See <https://marlam.de/msmtp/msmtprc.txt> for examples.
|
|
|
|
Note, if running msmtp fails with the error message "account default
|
|
was already defined" then you probably have an account command here.
|
|
Account commands should be placed in
|
|
[](#opt-accounts.email.accounts._name_.msmtp.extraConfig).
|
|
'';
|
|
};
|
|
|
|
extraAccounts = mkOption {
|
|
type = types.lines;
|
|
default = "";
|
|
description = ''
|
|
Extra configuration lines to add to the end of {file}`~/.msmtprc`.
|
|
See <https://marlam.de/msmtp/msmtprc.txt> for examples.
|
|
'';
|
|
};
|
|
};
|
|
|
|
accounts.email.accounts = mkOption {
|
|
type = with types; attrsOf (submodule (import ./msmtp-accounts.nix));
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
home.packages = [ cfg.package ];
|
|
|
|
xdg.configFile."msmtp/config".text = configFile msmtpAccounts;
|
|
|
|
home.sessionVariables = {
|
|
MSMTPQ_Q = "${config.xdg.dataHome}/msmtp/queue";
|
|
MSMTPQ_LOG = "${config.xdg.dataHome}/msmtp/queue.log";
|
|
};
|
|
};
|
|
}
|