explaingit

doomemacs/doomemacs

Analysis updated 2026-06-21

22,078Emacs LispAudience · developerComplexity · 3/5Setup · moderate

TLDR

Doom Emacs is a configuration framework for GNU Emacs that gives you ~150 optional modules, Vim-style keybindings, and a CLI tool to manage packages, so you get a full-featured editor without building a config from scratch.

Mindmap

mindmap
  root((Doom Emacs))
    What it does
      Emacs config framework
      150 modules
      Vim key emulation
    Setup
      Clone and install
      init.el config
      straight.el packages
    Features
      LSP support
      Project search
      Persistent workspaces
    CLI Tools
      doom sync
      doom upgrade
      doom doctor
    Audience
      Vim users
      Emacs veterans
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Set up a full-featured Emacs editor with Vim-style keys and language support in minutes instead of weeks.

USE CASE 2

Pick exactly the modules you need, LSP, Docker, Terraform, search, and have them configured automatically.

USE CASE 3

Keep your Emacs configuration reproducible and updatable with a single doom upgrade command.

USE CASE 4

Use persistent workspaces, EditorConfig integration, and vim-sneak out of the box without manual configuration.

What is it built with?

Emacs LispGNU Emacsstraight.elripgrep

How does it compare?

doomemacs/doomemacssyl20bnr/spacemacsmagit/magit
Stars22,07824,5407,093
LanguageEmacs LispEmacs LispEmacs Lisp
Setup difficultymoderatemoderatemoderate
Complexity3/53/52/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Requires GNU Emacs 27.1-30.2, Git 2.23+, and ripgrep installed before cloning and running bin/doom install.

In plain English

Doom Emacs is a configuration framework for GNU Emacs, the long-running, extensible text editor. Emacs by itself is famously powerful but also famously bare and hard to set up, so a "framework" is a curated starting point: someone else has already chosen sensible defaults, picked which packages to install, written the glue code, and provided commands to update and maintain everything. Doom is aimed in particular at people who like Vim's keyboard model (it ships with optional Vim emulation through evil-mode) but want Emacs' breadth, and at long-time Emacs users who have grown tired of rebuilding their own config from scratch. The way it works is that you clone the repository into a directory like ~/.config/emacs and run a bin/doom install command. Doom is built around about 150 optional "modules" (the README puts the count at ~150). Each module bundles a set of related packages and configuration, for a specific programming language, for a tool like docker or terraform, for LSP support through lsp-mode or eglot, for project search using ripgrep with ivy or helm, for a popup manager that controls how temporary buffers appear, and so on. You list which modules you want in an init.el file and Doom takes care of the rest. The package manager underneath is straight.el, exposed through a command-line tool (doom sync to install missing packages and regenerate caches, doom upgrade to update everything, doom doctor to diagnose problems, doom env to capture your shell environment). The README states the design priorities as performance ("Gotta go fast"), staying close to vanilla Emacs internals, reasonable defaults that you can override, not auto-installing system dependencies, and treating reproducibility seriously (with Nix/Guix called out as fitting that goal). You would pick Doom when you want a full-featured Emacs configuration without spending weeks tuning your own, a Spacemacs-style leader-key scheme (SPC for evil users, C-c for vanilla users), Vim ports like vim-sneak and vim-easymotion, persistent workspaces, EditorConfig integration, and language support out of the box. It requires GNU Emacs 27.1 to 30.2, Git 2.23 or newer, and ripgrep, with fd recommended, the configuration itself is written in Emacs Lisp.

Copy-paste prompts

Prompt 1
I want to set up Doom Emacs for Python development. Which modules should I enable in my init.el and how do I configure LSP support?
Prompt 2
Walk me through the Doom Emacs module system: how do I create a custom module for my own workflow?
Prompt 3
My Doom Emacs is slow to start. What does doom doctor diagnose and how do I use doom sync to fix package cache issues?
Prompt 4
How do I configure evil-mode in Doom Emacs to match my Vim workflow, including vim-sneak and easymotion-style bindings?
Prompt 5
I use Nix. How do I make my Doom Emacs configuration reproducible across machines?

Frequently asked questions

What is doomemacs?

Doom Emacs is a configuration framework for GNU Emacs that gives you ~150 optional modules, Vim-style keybindings, and a CLI tool to manage packages, so you get a full-featured editor without building a config from scratch.

What language is doomemacs written in?

Mainly Emacs Lisp. The stack also includes Emacs Lisp, GNU Emacs, straight.el.

How hard is doomemacs to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is doomemacs for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Scan in gitsafehub Deploy in gitdeployhub doomemacs on gitmyhub

Verify against the repo before relying on details.