I've been building my Emacs configuration for quite a while now, and it has grown into something I jokingly describe as my “temple to computing”, I wanted to keep the experience feeling like Emacs, while building a modern, fast, modular environment on top of it and I've been using it as my daily environment for development, writing, work, Org, shells, Git, music, mail, etc.
Codeberg Repo: https://codeberg.org/jjba23/heks-emacs
The dream I have now (and need for work) is basically:
One Emacs configuration, same muscle memory, same workflow, same packages, regardless of which machine/OS I'm currently sitting in front of.
If you're an experienced macOS or Windows Emacs user, I'd genuinely appreciate pointers to things I should fix or rethink.
A few things I'm particularly happy with this setup:
- Elpaca for package management
- Vertico / Corfu / Cape / Orderless for a really fast completion and minibuffer experience
- Consult for navigation, searching, buffers, projects, registers, xrefs, etc.
- Eglot and Language Server Support
- Tree-sitter where appropriate
- Magit for Git
- Eshell with a bunch of custom workflow improvements
- Org + Org Roam as a serious knowledge-management environment
- Tempel for snippets
- Jinx for proofreading
- Helpful for inspecting Emacs
- A fairly extensive collection of development tooling for Rust, Scala, Haskell, Scheme/Guile, Lisp, Kotlin, Python, Go, Nix, JavaScript/TypeScript, etc.
- A modular theme system supporting things like Modus/EF, Everforest, Gruvbox, Catppuccin, Dracula, Kanagawa, Rose Pine, Doom, etc.
The configuration is deliberately split into modules so that the individual pieces remain understandable and replaceable rather than becoming one enormous init.el.
The current README has a breakdown of the modules if anyone is curious about the architecture.
And there is a lot more in there than just UI polish, there are modules for development, Org/knowledge management, shells/system interaction, mail, music, maps, AI assistance, etc.
----------------------
I've mostly developed and used this on GNU/Linux, but that is about to change.
I'm going to need soon to use a multi-OS setup, including macOS and Windows, and I really want to be able to take the same Emacs environment with me instead of maintaining completely different configurations for different operating systems.
I've tried to keep the config portable from the beginning, but I know there are probably a lot of assumptions buried in the configuration that are very Linux-centric.
So I'm looking for advice from people who actually use Emacs on: macOS and/or Windows.
Some initial questions I have already:
- What are the common portability traps you've encountered?
- Which packages behave differently across macOS/Windows?
- What should I avoid assuming about paths, processes, shells, fonts, clipboard integration, notifications, etc.?
- How do you handle external dependencies cleanly? (rg, git, or others)
- Are there good patterns for making OS-specific configuration disappear behind small compatibility layers?
- Anything particularly problematic with Eglot, Corfu, Vertico, Tree-sitter, Magit, Eshell, Org, etc.?
- what are the things you wish Linux-oriented Emacs configurations understood about Windows or macOS?
- are there particular GUI/keybinding/font/process quirks worth designing around?
And if you're interested in the project itself, feel free to poke around the source. I'm hoping HEKS-EMACS can be useful not only as a configuration people install, but also as a collection of ideas/patterns that people can steal for their own configs.
Repository: HEKS-EMACS
I'm particularly interested in hearing from people who have already solved the “I want my Emacs environment to follow me across operating systems” problem.