Skip to main content

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.emacs (nixpkgs) binary-cache parity as an invariant; git-based variants come from nix-community/emacs-overlay
  • A distribution (nix/mk-overlay.nix, exposed via flake.nix and the default.nix flake-compat shim) that ships Emacs together with all ~275 tree-sitter grammars from nixpkgs
  • A development shell (devenv.nix) with linters, language servers, and docs tooling (Emacs itself is not in the shell — launch it with just run-built)
  • A home-manager service (module.nix) for running Jotain as a user daemon with emacsclient
  • A Justfile task runner covering check, build, launch (just run-built), 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.emacs (nixpkgs) 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. dirvishdired, magitvc) lives in the same file as the built-in it enhances — there is no “builtins.el” / “third-party.el” split.
  • Modern Emacs — an Emacs 31 configuration (default build: the Emacs 31 pretest via emacs-overlay; floor: 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 August 23, 2026