aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/services/getmail.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/modules/services/getmail.nix')
-rw-r--r--home-manager/modules/services/getmail.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/home-manager/modules/services/getmail.nix b/home-manager/modules/services/getmail.nix
new file mode 100644
index 00000000000..46d4c1752d4
--- /dev/null
+++ b/home-manager/modules/services/getmail.nix
@@ -0,0 +1,61 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ cfg = config.services.getmail;
+
+ accounts = filter (a: a.getmail.enable)
+ (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 = concatMapStringsSep " " (a: " --rcfile ${renderConfigFilepath a}") accounts;
+in
+{
+ options = {
+ services.getmail = {
+ enable = mkEnableOption "the getmail systemd service to automatically retrieve mail";
+
+ frequency = mkOption {
+ type = types.str;
+ default = "*:0/5";
+ example = "hourly";
+ description = ''
+ The refresh frequency. Check <literal>man systemd.time</literal> 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
+ <literal>default</literal>) to avoid pinentry asking
+ permanently for a password.
+ '';
+ };
+ };
+ };
+
+ config = mkIf cfg.enable {
+ systemd.user.services.getmail = {
+ Unit = {
+ Description = "getmail email fetcher";
+ };
+ Service = {
+ ExecStart = "${pkgs.getmail}/bin/getmail ${configFiles}";
+ };
+ };
+
+ systemd.user.timers.getmail = {
+ Unit = {
+ Description = "getmail email fetcher";
+ };
+ Timer = {
+ OnCalendar = "${cfg.frequency}";
+ Unit = "getmail.service";
+ };
+ Install = {
+ WantedBy = [ "timers.target" ];
+ };
+ };
+
+ };
+}