Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.jylhis.com/llms.txt

Use this file to discover all available pages before exploring further.

Quickstart

Clone the repository

git clone https://github.com/Jylhis/jotain.git
cd jotain

Enter the development shell

Jotain ships a devenv shell that provides Emacs (built from the local emacs.nix), just, nil, nixfmt-rfc-style, treefmt, and the Nerd Fonts the UI config looks up. With direnv installed it activates automatically; otherwise enter it manually:
devenv shell

Run Emacs with the Jotain configuration

just run            # GUI
just debug          # GUI with --debug-init and debug-on-error
just tty            # terminal (-nw)
just daemon         # foreground daemon for emacsclient
just client         # graphical emacsclient frame
just client-tty     # terminal emacsclient frame
just quick          # emacs -Q -nw with the wombat theme (no Jotain config)
just run launches Emacs with --init-directory=<repo>, so it never touches ~/.emacs.d. The first launch bootstraps any package not provided by Nix from MELPA; subsequent launches load from the package cache. See Launching Emacs for when to reach for each pattern (one-shot vs. daemon + client vs. -Q -nw quick edit) and how to enable the emd / em / emg shell aliases via services.jotain.shellAliases.

Build a standalone Emacs

If you want a Nix-built binary outside the devenv shell:
just build          # mainline Emacs 30 + all 275 tree-sitter grammars
just run-built      # build for the current platform, then launch result/bin/emacs

Sanity-check the configuration

just check          # parse-only: every .el file under lisp/ + early-init + init
just compile        # byte-compile with byte-compile-error-on-warn
just test           # run any ERT tests under test/ (currently none)
just fmt            # treefmt — Nix formatting via nixfmt-rfc-style

Clean build artifacts

just clean          # .elc files, autosaves, eln-cache, result/
just clean-all      # also elpa/, var/, etc/, .dev-home/ — forces a full re-fetch

Update pinned sources

flake.lock is the single source of truth for input revs; devenv.yaml mirrors the shared ones (nixpkgs, treefmt-nix).
just update             # update every flake input, then sync devenv.yaml + devenv.lock
just verify             # assert flake.lock and devenv.lock agree on every shared input
Last modified on May 17, 2026