aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/services/taskwarrior-sync.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/modules/services/taskwarrior-sync.nix')
-rw-r--r--home-manager/modules/services/taskwarrior-sync.nix58
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" ];
+ };
+ };
+ };
+}