{ config, lib, pkgs, ... }: { imports = [ ../shell/default.nix ../shell/git.nix ../gpg/default.nix ../texlive/default.nix ../programming/default.nix ]; home.file = { ".emacs.d/templates".source = ./templates; ".emacs.d/early-init.el".text = '' (setopt use-package-check-before-init t use-package-enable-imenu-support t base16-theme-distinct-fringe-background t base16-theme-highlight-mode-line 'contrast) ''; }; services.emacs = { enable = lib.mkDefault true; package = config.programs.emacs.finalPackage; defaultEditor = true; client.enable = true; socketActivation.enable = false; startWithUserSession = "graphical"; }; programs.emacs = { enable = true; package = pkgs.emacs30.override { withImageMagick = true; withPgtk = true; }; extraConfig = builtins.readFile ./init.el; extraPackages = epkgs: with epkgs; [ # UI and Appearance delight nerd-icons nerd-icons-dired nerd-icons-ibuffer nerd-icons-corfu # Email and Calendar khalel mu4e # Other (TODO sort) diff-hl org-roam org-journal org-noter citar vertico marginalia orderless corfu corfu-terminal cape consult consult-eglot tempel tempel-collection rainbow-delimiters envrc treesit-grammars.with-all-grammars treesit-auto apheleia flymake-shellcheck flymake-yamllint flymake-clippy flymake-eslint magit forge nix-mode lua-mode python-docstring python-pytest auctex markdown-mode pandoc-mode scad-mode ]; }; home.packages = with pkgs; [ # Plugin requirements gcc sqlite languagetool wordnet pandoc ghostscript poppler_utils graphviz-nox ]; }