diff --git a/modules/aspects/roles.nix b/modules/aspects/roles.nix index c92965d..9ecf65b 100644 --- a/modules/aspects/roles.nix +++ b/modules/aspects/roles.nix @@ -56,6 +56,7 @@ "earlyoom" "dolphin" "pass" + "zk" ]; laptop.features = [ diff --git a/modules/features/desktop/zk.nix b/modules/features/desktop/zk.nix new file mode 100644 index 0000000..8a8dc67 --- /dev/null +++ b/modules/features/desktop/zk.nix @@ -0,0 +1,107 @@ +{ ... }: +{ + config.dendritic.features.zk.homeModules = [ + ( + { ... }: + { + + home.sessionVariables = { + ZK_NOTEBOOK_DIR = "/home/gwg313/my-notes"; + }; + programs.zk = { + enable = true; + settings = { + notebook = { + dir = "~/my-notes"; + }; + note = { + language = "en"; + default-title = "Untitled"; + filename = "{{id}}-{{slug title}}"; + extension = "md"; + template = "inbox.md"; + id-charset = "alphanum"; + id-length = 4; + id-case = "lower"; + }; + format.markdown = { + multiword-tags = true; + hashtags = true; + }; + + tool = { + editor = "nvim"; + fzf-preview = "bat -p --color always {-1}"; + }; + + extra = { + author = "gwg313"; + }; + group = { + inbox = { + paths = [ "inbox" ]; + note.template = "inbox.md"; + }; + projects = { + paths = [ "projects" ]; + note.template = "project.md"; + }; + literature = { + paths = [ "literature" ]; + note.template = "literature.md"; + }; + note = { + paths = [ "notes" ]; + note.template = "permanent.md"; + }; + + seed = { + paths = [ "notes" ]; + note.template = "seed.md"; + }; + + daily = { + paths = [ "journal" ]; + note.filename = "{{format-date now}}"; + note.template = "daily.md"; + }; + }; + filter = { + # Notes created in last 2 weeks + recents = "--sort created- --created-after 'last two weeks'"; + + # Only permanent notes + permanent = "--group notes"; + + # Orphans (useful for cleaning up disconnected notes) + orphans = "--orphan"; + seeds = "--tag seed --sort created-"; + }; + alias = { + ls = "zk list --interactive $@"; + edit = "zk edit --interactive $@"; + inbox = ''zk new --no-input "$ZK_NOTEBOOK_DIR/inbox" --group inbox --title "$@"''; + seed = ''zk new --no-input "$ZK_NOTEBOOK_DIR/inbox" --group seed --title "$@"''; + proj = ''zk new --no-input "$ZK_NOTEBOOK_DIR/projects/" --group projects --title "$@"''; + lit = ''zk new --no-input "$ZK_NOTEBOOK_DIR/literature" --group literature --title "$@"''; + note = ''zk new --no-input "$ZK_NOTEBOOK_DIR/notes" --group notes --title "$@"''; + # Edit the last modified note. + edlast = "zk edit --limit 1 --sort modified- $@"; + seeds = "zk list seeds --interactive"; + # Edit the notes selected interactively among the notes created the last two weeks. + recent = "zk edit --sort created- --created-after 'last two weeks' --interactive"; + + # Show a random note. + lucky = "zk list --quiet --format full --sort random --limit 1"; + # Show backlinks to a given note + bl = "zk list --link-to $@"; + + # Orphans + orph = "zk list orphans --interactive"; + }; + }; + }; + } + ) + ]; +}