Does anyone have a working example of using the chemacs2
flake in conjunction with home-manager to manage an Emacs configuration that includes Doom-Emacs, that they wouldn’t mind sharing?
Haven’t tried it, but:
Looks like the options in chemacs.nix
use options.programs.emacs.chemacs
https://github.com/league/chemacs2nix/blob/5d474b40d4a78dee6cd5f14c9ac8079f1aa6395e/chemacs.nix#L57
and the code under tests/
looks like HM configs using those options, e.g. https://github.com/league/chemacs2nix/blob/5d474b40d4a78dee6cd5f14c9ac8079f1aa6395e/tests/various.nix
The chemacs for doom is along the lines of:
...
("doom" . ((user-emacs-directory . "~/doom-emacs")
(env . (("DOOMDIR" . "~/.config/doom")))))
...
The transliteration of which is:
config.program.emacs = {
chemacs.profiles.doom = {
userDir = "~/doom-emacs";
env.DOOMDIR = "~/.config/doom";
};
};
(And ~/.config/doom
you could manage under xdg.configFile
).
Where should you import the chemacs module that comes in the flake? In other words, how would you make the chemacs
option available in config.program.emacs
?
My best guess:
With the (undocumented?) extraModules
option to homeManagerConfiguration
.
In the flake.nix
in that repo, it uses self.homeModule
, but first thing I’d try would be to use an expression like chemacs2.homeModule
; or otherwise try to refer to the chemacs.nix
from that flake.
Another option maybe to somehow add the module to imports = [ ... ];
in your home.nix
, (using the extraSpecialArgs
to pass the chemacs flake in).