> ## 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

> Get up and running with Jotain in minutes

# Quickstart

## Clone the repository

```bash theme={}
git clone https://github.com/Jylhis/jotain.git
cd jotain
```

## Enter the development shell

Jotain ships a [devenv](https://devenv.sh) 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:

```bash theme={}
devenv shell
```

## Run Emacs with the Jotain configuration

```bash theme={}
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](/usage/launching) 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:

```bash theme={}
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

```bash theme={}
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

```bash theme={}
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`).

```bash theme={}
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
```
