11 inputs.nix-doom-emacs.hmModule
13 programs.doom-emacs = {
16 "${config.home.homeDirectory}/.doom.d";
20 enable = lib.mkDefault true;
21 package = config.programs.emacs.finalPackage;
23 socketActivation.enable = true;
26 enable = lib.mkDefault true;
27 extraPackages = epkgs: [
31 fonts.fontconfig.enable = lib.mkDefault true;
32 home.packages = with pkgs; [
33 # DOOM Emacs dependencies
35 (ripgrep.override { withPCRE2 = true; })
41 #nodePackages.javascript-typescript-langserver
44 #emacs-all-the-icons-fonts
45 pkgs.nerd-fonts.symbols-only
47 home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ];
48 home.sessionVariables = {
49 DOOMDIR = "${config.xdg.configHome}/doom";
50 DOOMLOCALDIR = "${config.xdg.dataHome}/doom";
51 DOOMPROFILELOADFILE = "${config.xdg.stateHome}/doom/load.el";
54 "doom/cli.el".text = lib.readFile emacs/cli.el;
55 "doom/config.el".text = lib.readFile emacs/config.el;
56 "doom/init.el".text = lib.readFile emacs/init.el;
57 "doom/packages.el".text = lib.readFile emacs/packages.el;
59 source = inputs.doom-emacs;
60 # FIXME: the first install takes ages, it timeouts home-manager-${USER}.service
61 onChange = "${pkgs.writeShellScript "doom-change" ''
62 export DOOMDIR="${config.home.sessionVariables.DOOMDIR}"
63 export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}"
64 export DOOMPROFILELOADFILE="${config.home.sessionVariables.DOOMPROFILELOADFILE}"
65 if [ ! -d "$DOOMLOCALDIR" ]; then
66 ${config.xdg.configHome}/emacs/bin/doom install
68 ${config.xdg.configHome}/emacs/bin/doom sync
73 xresources.properties = {
74 #"Emacs.FontBackend" = "xft";