{ pkgs, ... }: let packages = epkgs: with epkgs; [ aidermacs # pair programming in Emacs with Aider cape consult corfu diminish direnv docker docker-compose-mode dockerfile-mode exec-path-from-shell git-link go-mode gotest gptel # LLM client for Emacs hcl-mode jq-mode json-mode json-reformat magit marginalia nix-mode orderless protobuf-mode rg terraform-mode toml-mode tree-sitter tree-sitter-langs treesit-grammars.with-all-grammars vertico yaml-mode yasnippet yasnippet-capf ]; in { home.file.".config/emacs/early-init.el".source = ./configs/emacs/early-init.el; home.file.".config/emacs/init.el".source = ./configs/emacs/init.el; programs.emacs = { enable = true; extraPackages = packages; package = pkgs.emacs.override { withNativeCompilation = false; }; }; home.packages = with pkgs; [ aspell aspellDicts.en aspellDicts.en-science aspellDicts.en-computers ]; home.sessionVariables = { EDITOR = "${pkgs.emacs}/bin/emacsclient -a="; }; }