diff options
Diffstat (limited to 'home-manager/modules/services/taskwarrior-sync.nix')
-rw-r--r-- | home-manager/modules/services/taskwarrior-sync.nix | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/home-manager/modules/services/taskwarrior-sync.nix b/home-manager/modules/services/taskwarrior-sync.nix new file mode 100644 index 00000000000..4179ac8aa85 --- /dev/null +++ b/home-manager/modules/services/taskwarrior-sync.nix @@ -0,0 +1,58 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.services.taskwarrior-sync; + +in + +{ + meta.maintainers = with maintainers; [ minijackson pacien ]; + + options.services.taskwarrior-sync = { + enable = mkEnableOption "Taskwarrior periodic sync"; + + frequency = mkOption { + type = types.str; + default = "*:0/5"; + description = '' + How often to run <literal>taskwarrior sync</literal>. This + value is passed to the systemd timer configuration as the + <literal>OnCalendar</literal> option. See + <citerefentry> + <refentrytitle>systemd.time</refentrytitle> + <manvolnum>7</manvolnum> + </citerefentry> + for more information about the format. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.taskwarrior-sync = { + Unit = { + Description = "Taskwarrior sync"; + }; + Service = { + CPUSchedulingPolicy = "idle"; + IOSchedulingClass = "idle"; + ExecStart = "${pkgs.taskwarrior}/bin/task synchronize"; + }; + }; + + systemd.user.timers.taskwarrior-sync = { + Unit = { + Description = "Taskwarrior periodic sync"; + }; + Timer = { + Unit = "taskwarrior-sync.service"; + OnCalendar = cfg.frequency; + }; + Install = { + WantedBy = [ "timers.target" ]; + }; + }; + }; +} |