Emacs configuration and packages
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.2 KiB

Emacs configuration and personal packages


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)


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.