83 lines
2.2 KiB
Nix
83 lines
2.2 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: let
|
|
doom-path-pkgs = with pkgs; [
|
|
(ripgrep.override {withPCRE2 = true;})
|
|
binutils
|
|
cmake
|
|
editorconfig-core-c
|
|
emacs-all-the-icons-fonts
|
|
fd
|
|
fira-code-nerdfont
|
|
git
|
|
gnumake
|
|
gnutls
|
|
imagemagick
|
|
mlocate
|
|
zstd
|
|
];
|
|
wrapped-emacs = pkgs.symlinkJoin {
|
|
name = "wrapped-emacs";
|
|
paths = [pkgs.emacs29];
|
|
nativeBuildInputs = [pkgs.makeBinaryWrapper];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/emacs \
|
|
--prefix PATH : ${lib.makeBinPath doom-path-pkgs} \
|
|
--add-flags "--init-directory=${config.xdg.configHome}/doom-emacs"
|
|
wrapProgram $out/bin/emacsclient \
|
|
--prefix PATH : ${lib.makeBinPath doom-path-pkgs}
|
|
'';
|
|
};
|
|
doom-setup = pkgs.writeShellScript "doom-setup" ''
|
|
export PATH="$PATH:${lib.makeBinPath doom-path-pkgs}"
|
|
export EMACS="${wrapped-emacs}/bin/emacs"
|
|
export DOOMDIR="${config.home.sessionVariables.DOOMDIR}"
|
|
export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}"
|
|
if [ ! -d "$DOOMLOCALDIR" ]; then
|
|
${config.xdg.configHome}/doom-emacs/bin/doom install --force
|
|
else
|
|
${config.xdg.configHome}/doom-emacs/bin/doom "$@"
|
|
fi
|
|
'';
|
|
in {
|
|
programs.emacs = {
|
|
enable = true;
|
|
package = wrapped-emacs;
|
|
};
|
|
|
|
home = {
|
|
sessionPath = ["${config.xdg.configHome}/doom-emacs/bin"];
|
|
sessionVariables = {
|
|
DOOMDIR = "${config.xdg.configHome}/doom-config";
|
|
DOOMLOCALDIR = "${config.xdg.configHome}/doom-local";
|
|
};
|
|
};
|
|
|
|
xdg = {
|
|
enable = true;
|
|
configFile = {
|
|
"doom-config/config.el" = {
|
|
source = ./static/doom-config/config.el;
|
|
};
|
|
"doom-config/init.el" = {
|
|
source = ./static/doom-config/init.el;
|
|
onChange = "${doom-setup} sync --force";
|
|
};
|
|
"doom-config/packages.el" = {
|
|
source = ./static/doom-config/packages.el;
|
|
onChange = "${doom-setup} sync --force -u";
|
|
};
|
|
"doom-emacs" = {
|
|
source = builtins.fetchGit {
|
|
url = "https://github.com/doomemacs/doomemacs";
|
|
rev = "9620bb45ac4cd7b0274c497b2d9d93c4ad9364ee";
|
|
};
|
|
onChange = "${doom-setup} --force sync -u";
|
|
};
|
|
};
|
|
};
|
|
}
|