{ 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;
  client.enable = true;
  socketActivation.enable = true;
};
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".source = emacs/cli.el;
  "doom-config/config.el".source = emacs/config.el;
  "doom-config/init.el".source = emacs/init.el;
  "doom-config/packages.el".source = emacs/packages.el;
  "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 = {
  #"Emacs.FontBackend" = "xft";
};
};
}