CCE

org-roam

Contents

org-roam repository on GitHub. Org Roam is Roam Research in org-mode maybe. a Knowledge Management Tool for Emacs org-mode in nonlinear Zettelkasten fashion. It is for now the root of my personal Knowledge Base the repository which feeds my Arcology where I develop thoughts and make plans and where the CCE is developed. It is configured quite simply with a keymap exposed to me on <SPC>r via Evil Leader. One of these days I'll build a cleaner abstraction defining these maps.

List of Things to Fund

Installing in CCE

Rather than install org-roam with the system wide load-path on systems with home-manager it's included through MELPA. To build from local checkout: #+ARROYO_HOME_EPKGS: overrides/org-roam.nix which injects this override in to Arroyo Emacs's package index:

nix:tangle ~/nix/overrides/org-roam.nix
# org-roam = epkgs.melpaPackages.org-roam.overrideAttrs(old: {
#   src = /home/rrix/Code/org-roam;
# });

I unconditionally need sqlite3 installed in my home-manager:

nix:tangle ~/nix/hm/org-roam.nix
{pkgs, ...}:
{
  home.packages = [ pkgs.sqlite ];
}

My org-roam configuration is basically pedestrian I can hit <SPC>r to get to the org-roam-prefix-map keymap below which includes all the sort of functions I would want to perform on a node or to browse to a new one. Pressing M-. in insert mode will allow me to quickly link to any roam node.

emacs-lisp:tangle ~/nix/lisp/org-roam.el
; (use-package emacsql-sqlite3)
(use-package buttercup)
(defun cce/org-roam-mode-hook ()
  (setq-local completion-at-point-functions
              (delq 'tags-completion-at-point-function completion-at-point-functions)))
(use-package org-roam
  :hook
  (org-mode . cce/org-roam-mode-hook)
  :init
  (setq org-roam-v2-ack t)
  (setq org-roam-directory (expand-file-name "~/org/"))
  :config
  (setq org-roam-directory (expand-file-name "~/org/"))
  (setq org-roam-link-title-format "%s")
  (add-to-list #'org-roam-mode-sections #'org-roam-unlinked-references-section)
  (org-roam-db-autosync-mode)
  :bind (:map evil-leader--default-map :prefix "r" :prefix-map org-roam-prefix-map
              ("aa" . org-roam-alias-add)
              ("ar" . org-roam-alias-remove)
              ("ka" . org-roam-ref-add)
              ("kr" . org-roam-ref-remove)
              ("Ta" . org-roam-tag-add)
              ("Tr" . org-roam-tag-remove)
              ("f" . org-roam-node-find)
              ("g" . org-roam-show-graph)
              ("i" . org-roam-node-insert)
              ("K" . org-roam-ref-find)
              ("l" . org-roam-buffer-toggle)
              ("L" . org-roam-buffer-display-dedicated)
              ("r" . org-roam-node-random)
              ("dp" . org-roam-dailies-goto-previous-note)
              ("dn" . org-roam-dailies-goto-next-note)
              ("dd" . org-roam-dailies-goto-today)
              )
  :bind (:map evil-insert-state-map
              ("M-." . org-roam-node-insert)
              ("C-c r" . org-roam-node-insert)))

I have a lot of work still to expand upon this but for now I just use the defaults. These are not included in my configuration:

emacs-lisp:tangle no
(setq org-roam-capture-templates '())

(add-to-list 'org-roam-capture-templates
             '("d" "default" plain #'org-roam--capture-get-point
               "%?"
               :file-name "${slug}"
               :head "#+TITLE: ${title}\n"
               :unnarrowed t))
emacs-lisp:tangle ~/nix/lisp/org-roam.el
(provide 'cce/org-roam)

NEXT Usage recommendations

NEXT basic structure what goes in to individual notes versus what ends up as headlines -- largely driven by the needs of The Arcology Project.

NEXT IDs and Aliases and when and how to use them