Jotain
Jotain is a custom GNU Emacs configuration built from scratch. The name is Finnish for “something.”
The project includes:
- A modular Emacs Lisp configuration organised by concern (
lisp/init-*.el)
- A Nix expression (
emacs.nix) for building GNU Emacs from source, with every upstream build flag exposed and pkgs.emacs30 binary-cache parity as an invariant
- A distribution wrapper (
default.nix) that ships Emacs together with all ~275 tree-sitter grammars from nixpkgs
- A development shell (
devenv.nix) that provides the same Emacs to developers and tools
- A home-manager service (
nix/jotain-service.nix) for running Jotain as a user daemon with emacsclient
- A
Justfile task runner covering check, build, run, pins, and cleanup
Why Jotain?
Jotain takes a different approach from framework-based Emacs configurations like Doom or Spacemacs. Instead of layering on top of an opinionated framework, Jotain is built from scratch with:
- Nix-based builds — reproducible Emacs from source with precise control over compile options, and binary-cache parity with
pkgs.emacs30 for the default configuration.
- Modular Elisp — one file per concern (
init-ui.el, init-completion.el, init-vc.el, …). A package that only exists to enhance a built-in (e.g. dirvish → dired, magit → vc) lives in the same file as the built-in it enhances — there is no “builtins.el” / “third-party.el” split.
- Modern Emacs — targets Emacs 30+ (
emacs "30.1"), with native compilation, tree-sitter modes, lexical binding throughout, and use-package built-in.
setopt by default — user options (defcustom) are set via setopt so :set callbacks and type validation actually run.
Source Code
Jotain is open source and available on GitHub.Last modified on April 8, 2026