|
11 hours ago | |
---|---|---|
attic | 5 days ago | |
data | 7 months ago | |
lib | 11 hours ago | |
.gitignore | 11 months ago | |
blog.org | 4 months ago | |
completion.org | 5 days ago | |
email.org | 3 weeks ago | |
eww.org | 6 days ago | |
exwm.org | 5 days ago | |
gnus.org | 3 weeks ago | |
init.org | 4 days ago | |
notmuch.org | 3 days ago | |
org.org | 2 months ago | |
readme.org | 5 months ago |
readme.org
Emacs configuration and personal packages
Bootstrap
This is the emacs standard init file, which will load (maybe
tangled) the file init.org, checking first whether a fresh tangle is
needed. Note that the rest of elisp tangling in init.org goes to a
different file (namely, the one that is loaded by
~/.emacs.d/init.el
).
However, also note that if literate-elisp is installed, we load instead the org file, directly. It's because of that that we start by setting up packages. A drawback of literate-elisp is that it only knows how to load with lexical binding set to nil, so i tend to prefer just loading tangled .el files. The packages org-auto-tangle (to asyncronously generate those files) and embark (to easily navigate between the two flavours) come in handy in that scenario.
Here's the directory where a checkout of this repo lives:
(defvar jao-emacs-dir (expand-file-name "~/etc/emacs"))
followed by package.el's initialisation:
(setq package-user-dir
(expand-file-name (format "~/.emacs.d/elpa.%s" emacs-major-version))
package-check-signature 'allow-unsigned)
(require 'package)
(dolist (a '(("melpa" . "https://melpa.org/packages/")
("gnu-devel" . "https://elpa.gnu.org/devel/")))
(add-to-list 'package-archives a t))
(setf (alist-get "gnu" package-archives nil t #'string=) nil)
(package-initialize)
and a tangling helper:
(require 'org)
(defun jao-load-org (file)
(let ((file (concat (file-name-sans-extension file) ".org")))
(org-babel-load-file (expand-file-name file jao-emacs-dir))))
Finally, we load either init.org or its tangled version from
jao-emacs-dir
:
(jao-load-org "init")
You can tangle this readme to generate the minimal init.el file above.
Configuration as a set of literate files
- init.org: main configuration as a literate org file; it uses (besides lots of packages), many of my libraries in lib, and loads on demand the other org files below.
- completion.org: completion setup using corfu, vertico, consult and friends.
- org.org org mode configuration.
- blog.org: blogging using org-static-blog.
- email.org: email handling in emacs.
- gnus.org: email using gnus.
- notmuch.org: email using notmuch.
- eww.org: browsing with eww.
- exwm.org: configuration for exwm, loaded when
jao-exwmn-enable
is called.
The attic contains other literate configuration files not currently used by init.org, like counsel.org for old ivy-based completion, or w3m.org for an emacs-w3m configuration i used for many years.