Skip to content

Add the nemacs integration - #158

Merged
clhodapp merged 2 commits into
mainfrom
feat/nemacs-integration
Nov 13, 2026
Merged

clhodapp merged 2 commits into
mainfrom
feat/nemacs-integration

Conversation

@clhodapp

Copy link
Copy Markdown
Contributor

nemacs (github.com/clhodapp/nemacs) builds an Emacs from Nix modules, the way nixvim and nvf build a Neovim. This adds a caisson integration for the nemacs class, modeled on the nvf and nixvim integrations.

A nemacs configuration is evaluated per system on the package set selected for it. The integration takes no ecosystem source: the core module is the core entry that the flake of nemacs registers for the class, and pkgs is supplied as a module argument, as nemacs's own evalNemacs supplies it.

A configuration is published as nemacsConfigurations.<system>.<name> with package, activationPackage, config and options. It is kept in a Nix profile of its own, so running activate from activationPackage switches the editor alone, without activating the home, machine or hjem configuration it is declared inside. Those parents already activate any kept profile, and their shims offer emacs and emacsclient under CAISSON_NEMACS_PROFILE.

The change registers the class where caisson lists its integrations, adds a README row, and adds a pinned-world test that compares a published configuration and a NixOS machine profile with what nemacs's evalNemacs builds. tests/dependencies pins the nemacs flake for it. The existing pins did not move.

nix flake check --keep-going -L passes on x86_64-linux, VM tests included. The aarch64-darwin checks were not run. There is no VM test for nemacs like the one nvf has in profile-vm.

🤖 Generated with Claude Code

clhodapp and others added 2 commits November 12, 2026 01:41
A nemacs configuration is an Emacs written as nemacs modules, evaluated per system on the package set selected for it. The core module is the one the flake of nemacs registers for the class, so the integration takes no ecosystem source.

A configuration is published as nemacsConfigurations.<system>.<name> with its package, its activationPackage, config and options. It is kept in a Nix profile of its own, so activate switches the editor without activating the home, machine or hjem configuration it is declared inside. Those parents already activate any kept profile, and the program shims offer emacs and emacsclient under CAISSON_NEMACS_PROFILE.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The nemacs modules follow the generic registry entries that replaced the module symlinks, the evaluator reports the modules it received and reads its configuration module through configModuleOf, and the registered world of the pinned-world suite holds a nemacs configuration.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@clhodapp
clhodapp merged commit 568843b into main Nov 13, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant