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.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. dirvishdired, magitvc) 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