summaryrefslogtreecommitdiffstats
path: root/modules/home.legacy/conf/taskwarrior/default.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-18 17:07:46 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-18 17:07:46 +0200
commitc52c7f314ccadcc2fcd91e28c8fd1b88f6d5ce0c (patch)
treee8b947710b467b32740598ff574982097836f66c /modules/home.legacy/conf/taskwarrior/default.nix
parentchore(pkgs/yt): 1.2.1 -> 1.3.0 (diff)
downloadnixos-config-c52c7f314ccadcc2fcd91e28c8fd1b88f6d5ce0c.zip
refactor(modules): Move all system modules to `by-name`
From now on all modules should be added to the new `by-name` directory. This should help remove the (superficial and utterly useless) distinction between `home-manager` and `NixOS` modules.
Diffstat (limited to 'modules/home.legacy/conf/taskwarrior/default.nix')
-rw-r--r--modules/home.legacy/conf/taskwarrior/default.nix125
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;
+ };
+ };
+ };
+}