diff options
Diffstat (limited to 'modules/home.legacy/conf/taskwarrior/default.nix')
-rw-r--r-- | modules/home.legacy/conf/taskwarrior/default.nix | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/taskwarrior/default.nix b/modules/home.legacy/conf/taskwarrior/default.nix new file mode 100644 index 00000000..d7aec156 --- /dev/null +++ b/modules/home.legacy/conf/taskwarrior/default.nix @@ -0,0 +1,125 @@ +{ + nixosConfig, + lib, + config, + ... +}: { + imports = [ + ./hooks + ]; + + services.taskwarrior-sync = { + enable = true; + }; + + programs.taskwarrior = let + projects = import ./projects {}; + + mkContext = project: + if builtins.hasAttr "subprojects" project + then + lib.lists.flatten ( + (builtins.map mkContext (builtins.map (mkProject project) project.subprojects)) + ++ (mkContext (builtins.removeAttrs project ["subprojects"])) + ) + else [ + { + inherit (project) name; + value = let + name = + if builtins.hasAttr "pname" project + then project.pname + else project.name; + in { + read = "project:${name}"; + write = "project:${name}"; + rc = { + neorg_path = + if builtins.hasAttr "neorg_path" project + then project.neorg_path + else "${project.prefix}/${project.name}/index.norg"; + }; + }; + } + ]; + mkProject = project: subproject: let + pname = + if builtins.hasAttr "pname" project + then project.pname + else project.name; + in + if builtins.isString subproject + then { + name = "${project.name}_${subproject}"; + pname = "${pname}.${subproject}"; + neorg_path = + if builtins.hasAttr "neorg_path_prefix" project + then "${project.neorg_path_prefix}/${subproject}/index.norg" + else "${project.prefix}/${project.name}/${subproject}/index.norg"; + } + else if builtins.isAttrs subproject + then let + name = builtins.elemAt (builtins.attrNames subproject) 0; + in { + name = "${project.name}_${name}"; + pname = "${pname}.${name}"; + prefix = "${project.prefix}/${project.name}"; + neorg_path_prefix = "${project.prefix}/${project.name}/${name}"; + subprojects = builtins.elemAt (builtins.attrValues subproject) 0; + } + else builtins.throw "Subproject not a string or a attrs: ${subproject}"; + + context = + builtins.listToAttrs (lib.lists.flatten (builtins.map mkContext projects)); + in { + enable = true; + colorTheme = ./nord.theme; + extraConfig = '' + # This include just contains my taskd user credentials + include ${nixosConfig.age.secrets.taskserverCredentials.path} + ''; + config = { + news.version = "2.6.0"; + complete.all.tags = true; + list.all = { + projects = true; + tags = true; + }; + regex = true; + weekstart = "Monday"; + uda = { + total_active_time = { + type = "duration"; + label = "Total active time"; + }; + }; + alias = { + mod = "modify"; + n = "execute neorg --task"; + fstart = "execute neorg fstart"; + }; + color = true; + + hooks.location = "${config.xdg.configHome}/task/hooks"; + + urgency.uda.priority = { + H.coefficient = 6.0; + M.coefficient = 0; + L.coefficient = -1.8; + }; + + inherit context; + + taskd = { + server = "taskserver.vhack.eu:53589"; + trust = "strict"; + ca = + nixosConfig.age.secrets.taskserverCA.path; + key = + nixosConfig.age.secrets.taskserverPrivate.path; + certificate = + nixosConfig.age.secrets.taskserverPublic.path; + }; + }; + }; +} |