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 source: :tangle ~/arroyo-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 source: :tangle ~/arroyo-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 source:; (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 source: :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 source:(provide 'cce/org-roam)