{ pkgs, ... }: { home.packages = with pkgs; [ taskwarrior2 taskwarrior-tui tasksh vit timewarrior ]; programs.taskwarrior = { enable = true; package = pkgs.taskwarrior2; colorTheme = "dark-green-256"; dataLocation = "~/.task"; config = { weekstart = "Monday"; burndown = { cumulative = 0; }; journal = { info = "no"; time = "yes"; }; default = { project = "inbox"; command = "nnext"; width = 140; }; alias = { burn = "burndown"; cal = "calendar"; copy = "duplicate"; cp = "duplicate"; tom = "tomorrow"; }; report = { _reviewed = { columns = "uuid"; description = "Tasksh review report. Adjust the filter to your needs."; filter = "( reviewed.none: or reviewed.before:now-4weeks ) and ( +PENDING or +WAITING ) and -someday and project.not:books"; sort = "reviewed+,modified+"; }; mine = { columns = "description.count,id"; description = "strip"; filter = "-COMPLETED -DELETED -PARENT"; labels = "desc,ID"; sort = "description "; }; next.filter = " status:pending limit:page -BLOCKED -someday -WAITING"; inbox = { columns = " id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency"; description = "list inbox items"; filter = " status:pending limit:10 -BLOCKED -someday -WAITING proj:inbox"; labels = " ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg"; sort = " urgency-"; context = " 0"; }; waiting = { columns = " id,start.age,entry.age,depends,priority,project,tags,recur,wait,due,until.remaining,description,urgency"; description = "Waiting"; filter = " status.not:deleted status.not:completed -BLOCKED -someday +WAITING"; labels = " ID,Active,Age,Deps,P,Project,Tag,Recur,Wait til,Due,Until,Description,Urg"; sort = " wait"; }; nnext = { columns = " id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency"; description = "Next 10 list"; filter = " status:pending limit:10 -BLOCKED -someday -WAITING"; labels = " ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg"; sort = " urgency-"; }; title = { columns = " id,project,description.count"; description = "title only, please"; filter = " status:pending limit:10 "; #filter = " status:pending limit:10 -BLOCKED -WAITING"; labels = " ID,Project,Description"; sort = " description+"; }; anext = { columns = " id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency"; description = "Next 10 list"; filter = " status:pending limit:10 -BLOCKED -WAITING"; labels = " ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg"; sort = " urgency-"; }; last = { columns = " id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency"; description = "Oldest 10 list"; filter = " status:pending limit:10 -BLOCKED -someday -WAITING"; labels = " ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg"; sort = " entry+"; }; inboxdash = { columns = " id,project,description.count"; description = "Inbox for dashboards"; filter = " status:pending limit:10 -BLOCKED -someday -WAITING proj:inbox"; labels = " ID,Project,Description"; sort = " urgency-"; }; dash = { columns = " id,project,description.count"; description = "For dashboards"; filter = " status:pending limit:10 -BLOCKED -someday -WAITING"; labels = " ID,Project,Description"; sort = " urgency-"; }; mail = { columns = " id,priority,project,due.relative,until.remaining,description.count,urgency"; description = "Next 5 list"; filter = " status:pending limit:5 -BLOCKED -someday -WAITING"; labels = " ID,P,Project,Due,Until,Description,Urg"; sort = " urgency-"; }; followup = { columns = " id,start.age,entry.age,priority,project,description"; description = "Someday list"; filter = " status.not:completed status.not:deleted -BLOCKED +followup"; labels = " ID,Active,Age,P,Project,Description"; sort = " project,urgency-"; context = " 0"; }; someday = { columns = " id,start.age,entry.age,priority,project,description,urgency"; description = "Someday list"; filter = " status:pending -BLOCKED +someday limit:page -WAITING"; labels = " ID,Active,Age,P,Project,Description,Urg"; sort = " project,urgency-"; context = " 0"; }; }; taskd = { ca = "/home/don/.task/ca.cert.pem"; certificate = "/home/don/.task/don_harper.cert.pem"; credentials = "duckland.org/Don Harper/de27c234-6217-4e8b-83c1-2ea840bac55f"; key = "/home/don/.task/don_harper.key.pem"; server = "task.duckland.org:53589"; recurrence = "on"; }; uda = { priority = { label = "Priority"; type = "string"; values = "H,M,,L"; }; reviewed = { label = "Reviewed"; type = "date"; }; notes = { type = "string"; label = "Notes"; }; blocks = { type = "string"; label = "Blocks"; }; }; urgency = { blocking.coefficient = 2; uda = { recur.coefficient = 4; priority = { H.coefficient = 5; L.coefficient = -0.5; M.coefficient = 3.9; }; }; user = { project = { blogging.coefficient = 3; books.coefficient = -0.5; dinner.coefficient = 5; family.coefficient = 5; fashion.coefficient = -0.5; job.coefficient = 7; photo.coefficient = 4; selfhosted.fix.coefficient = 2; }; tag = { next.coefficient = 3; breakgoals.coefficient = 10; GTD.coefficient = 5; }; }; }; context = { selfhost = "project:selfhosted"; gtd.read = "+GTD"; gtd.write = "+GTD"; job.read = "proj:job"; job.write = "proj:job"; selfhosted.read = "proj:selfhosted"; selfhosted.write = "proj:selfhosted"; work.read = "proj:work"; work.write = "proj:work"; review.read = "-someday -WAITING project.not:books"; review.write = "-someday -WAITING project.not:books"; }; color.project.weekly-review = "on rgb510"; news.version = "2.6.0"; }; }; xdg.configFile."timewarrior/timewarrior.cfg".text = '' verbose = yes confirmation = off ''; home.file.".local/share/timewarrior/.placeholder".text = '' # placeholder ''; home.file."vit-config.ini" = { enable = true; target = ".vit/config.ini"; text = '' [taskwarrior] taskrc = ~/.config/task/taskrc [vit] default_keybindings = vi theme = default confirmation = True wait = True mouse = True [report] default_report = nnext default_filter_only_report = nnext indent_subprojects = True row_striping = True [marker] uda.notes.label = (N) enabled = True [color] [keybinding] o = :!wr onenote {TASK_UUID} ''; }; }