{ inputs, pkgs, lib, config, ... }: { options = { programs.doom-emacs = { enable = lib.mkEnableOption "doom-emacs"; }; }; config = lib.mkIf config.programs.doom-emacs.enable { /* imports = [ inputs.nix-doom-emacs.hmModule ]; programs.doom-emacs = { enable = true; doomPrivateDir = "${config.home.homeDirectory}/.doom.d"; }; services.emacs = { #enable = true; # Use with emacsclient -c package = config.programs.emacs.package; }; */ fonts.fontconfig.enable = true; home.packages = with pkgs; [ # DOOM Emacs dependencies binutils (ripgrep.override { withPCRE2 = true; }) fd gnutls hack-font imagemagick zstd #nodePackages.javascript-typescript-langserver sqlite editorconfig-core-c emacs emacs-all-the-icons-fonts ]; home.sessionPath = [ "${config.xdg.configHome}/emacs/bin" ]; home.sessionVariables = { DOOMDIR = "${config.xdg.configHome}/doom-config"; DOOMLOCALDIR = "${config.xdg.configHome}/doom-local"; }; xdg.configFile = { #"doom-config/cli.el".text = ""; #"doom-config/config.el".source = emacs/config.el; #"doom-config/init.el".source = emacs/init.el; #"doom-config/packages.el".text = ""; "emacs" = { source = inputs.doom-emacs; onChange = "${pkgs.writeShellScript "doom-change" '' export DOOMDIR="${config.home.sessionVariables.DOOMDIR}" export DOOMLOCALDIR="${config.home.sessionVariables.DOOMLOCALDIR}" if [ ! -d "$DOOMLOCALDIR" ]; then ${config.xdg.configHome}/emacs/bin/doom -y install else ${config.xdg.configHome}/emacs/bin/doom -y sync -u fi ''}"; }; }; xresources.properties = { # Enable subpixel rendering # https://bbs.archlinux.org/viewtopic.php?pid=1080864#p1080864 # https://www.emacswiki.org/emacs/XftGnuEmacs#h5o-17 "Xft.antialias" = "rgba"; "Xft.hinting" = true; "Xft.hintstyle" = "hintfull"; "Xft.rgba" = "rgb"; "Emacs.FontBackend" = "xft"; "Xft.embolden" = true; }; }; }