mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
Allow a user to disable an email account by setting `accounts.email.accounts.<name>.enable = false`. This is useful if someone wants to configure email accounts globally but only use them in certain circumstances. Everywhere email account configuration is used, check if the account is enabled before checking any attributes of the account.
70 lines
1.8 KiB
Nix
70 lines
1.8 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
|
|
cfg = config.services.getmail;
|
|
|
|
accounts = lib.filter (a: a.enable && a.getmail.enable) (
|
|
lib.attrValues config.accounts.email.accounts
|
|
);
|
|
|
|
# Note: The getmail service does not expect a path, but just the filename!
|
|
renderConfigFilepath = a: if a.primary then "getmailrc" else "getmail${a.name}";
|
|
configFiles = lib.concatMapStringsSep " " (a: " --rcfile ${renderConfigFilepath a}") accounts;
|
|
in
|
|
{
|
|
options = {
|
|
services.getmail = {
|
|
enable = lib.mkEnableOption "the getmail systemd service to automatically retrieve mail";
|
|
|
|
package = lib.mkPackageOption pkgs "getmail" { default = "getmail6"; };
|
|
|
|
frequency = lib.mkOption {
|
|
type = lib.types.str;
|
|
default = "*:0/5";
|
|
example = "hourly";
|
|
description = ''
|
|
The refresh frequency. Check `man systemd.time` for
|
|
more information on the syntax. If you use a gpg-agent in
|
|
combination with the passwordCommand, keep the poll
|
|
frequency below the cache-ttl value (as set by the
|
|
`default`) to avoid pinentry asking
|
|
permanently for a password.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
assertions = [
|
|
(lib.hm.assertions.assertPlatform "services.getmail" pkgs lib.platforms.linux)
|
|
];
|
|
|
|
systemd.user.services.getmail = {
|
|
Unit = {
|
|
Description = "getmail email fetcher";
|
|
};
|
|
Service = {
|
|
ExecStart = "${lib.getExe cfg.package} ${configFiles}";
|
|
};
|
|
};
|
|
|
|
systemd.user.timers.getmail = {
|
|
Unit = {
|
|
Description = "getmail email fetcher";
|
|
};
|
|
Timer = {
|
|
OnCalendar = "${cfg.frequency}";
|
|
Unit = "getmail.service";
|
|
};
|
|
Install = {
|
|
WantedBy = [ "timers.target" ];
|
|
};
|
|
};
|
|
|
|
};
|
|
}
|