Emacs is genuinely difficult out of the box. The configuration is written in elisp, the package ecosystem is large, and there’s no obvious starting point. Most guides either assume you already know what you’re doing, or point you at a distribution that hides everything behind another layer.

This is a particular problem for knowledge workers who aren’t developers - scientists, analysts, writers - who might get real value from a configurable, extensible editor, but have no reason to already know elisp.

I built initweave to lower that barrier. Not by hiding the configuration, but by making it legible - showing how elisp functions work and how an init.el can be built up from scratch.

What it does

You go to the site, pick the modules you want - completion, themes, LSP, org-mode, Git integration - and it generates a clean, commented init.el you can drop straight into ~/.emacs.d/. No boilerplate to reverse-engineer. No mystery options lifted from a stranger’s dotfiles. Just the pieces you asked for, in the right order, with sensible defaults.

Each module does one thing. The output is plain text you can read, edit, and grow into. initweave isn’t managing your config forever - it’s a starting point you own.

Why I built it

The out-of-the-box experience is hard. Not badly designed - the configuration being code is the point - but there’s no clear path from “I’ve just installed Emacs” to “I have a config that does what I want.” That gap is what initweave is trying to close.

I also wanted something that left you alone. A lot of Emacs configuration tools end up generating files you’re not supposed to touch, or wrapping things in layers of abstraction. initweave generates a file and steps back. Outgrow it, throw it away.1

What I learned building it

Deciding which modules to include - and what defaults to ship - was harder than the code. I wanted the output to be something I’d be comfortable using myself, not something I’d immediately rewrite. I ended up with fewer modules than I started with, and the output is better for it.

I also added a test suite that validates every module’s elisp through Emacs’s own batch mode.2 If I add or change something and introduce a syntax error, I know immediately.

The site is live at initweave.com. It’s free, the generated config is yours, and I’d be curious to hear what you think.

What’s next

A few things in the pipeline. Each module has a guide page covering what it does and how to get the most out of it - these are being written up and will be linked from the generated config.

There’s also an LLM integration in the works. The idea is that you describe your problem - “I need to manage references and take notes while reading papers” - and it selects and configures the right modules for you. Less browsing the module list, more getting to a working config.

Finally, automated updates. Package versions and best practices drift over time, and configs go stale. The plan is to keep the module defaults up to date automatically, so a config generated today stays reasonable six months from now.

Footnotes

  1. Distributions like Spacemacs and Doom are a perfectly reasonable way to get started - they hand you a working setup and get out of the way. But there’s real value in going back to basics at some point. You learn what the layers are actually doing, and your config stops feeling like something you inherited.

  2. Running a configuration generator’s tests through the actual tool it configures felt like the right approach. It also gave me an excuse to set up CI, which was more satisfying than it had any right to be.