NixOS-Configs/home/common/taskwarrior.nix
2024-12-13 11:50:29 -06:00

261 lines
8.2 KiB
Nix

{ 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}<Enter>
'';
};
}