{ config, pkgs, ... }: { programs.emacs = { # Clone emacs config from https://git.xenia.me.uk/xenia/emacs.git enable = true; package = pkgs.emacs29-pgtk; extraConfig = ''(org-babel-load-file "~/.emacs/README.org")''; extraPackages = epkgs: with epkgs; [ # theme modus-themes # spell-checking flyspell-correct consult-flyspell # password-store password-store password-store-otp pass # password-store major mode # completion-packages cape consult consult-eglot consult-yasnippet corfu corfu-terminal embark embark-consult marginalia orderless vertico # snippets-packages yasnippet yasnippet-snippets yasnippet-capf # ide-packages treesit-grammars.with-all-grammars treesit-auto flymake-popon flymake-shellcheck apheleia direnv rainbow-delimiters aggressive-indent nix-mode lua-mode cargo # media-packages emms # org-packages org-roam org-alert org-noter org-journal citar citar-embark gnuplot # project-packages ibuffer-project magit forge # ui-packages all-the-icons nerd-icons nerd-icons-completion nerd-icons-corfu nerd-icons-dired nerd-icons-ibuffer diminish ligature page-break-lines helpful which-key link-hint diff-hl # writing-packages markdown-mode pandoc-mode auctex auctex-latexmk latex-preview-pane # email-packages mu4e # feed-packages elfeed elfeed-org elfeed-tube elfeed-tube-mpv ]; }; services.emacs = { enable = true; package = config.programs.emacs.finalPackage; startWithUserSession = false; defaultEditor = true; client.enable = true; socketActivation.enable = true; }; home.packages = with pkgs; [ # Emacs requirements fd ripgrep imagemagick languagetool wordnet (aspellWithDicts (ds: with ds; [en en-computers en-science])) # For org-plot gnuplot # For EMMS mp3info # Language-specific requirements sqlite pandoc ghostscript mupdf poppler_utils # Customised LaTeX install # texlive.combined.scheme-full (texlive.combine { inherit (pkgs.texlive) scheme-basic dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of ; }) # Linters shellcheck # Formatters nodePackages.prettier alejandra ruff isort fprettify rustfmt stylua shfmt # LSP Servers nil fortls rust-analyzer luajitPackages.lua-lsp python3Packages.jedi-language-server ]; }