{ config, pkgs, crafted-emacs, ... }: { imports = [ ./formatters.nix ./lsp_servers.nix ]; stylix.targets.emacs.enable = false; xdg.configFile = { emacs = { source = ./config; recursive = true; }; "emacs/crafted-emacs".source = crafted-emacs; }; services.git-sync = { enable = true; repositories.org = { path = "${config.home.homeDirectory}/Org"; uri = "git+https://git.xenia.me.uk/xenia/Org.git"; }; }; programs.emacs = { enable = true; package = with pkgs; ((emacsPackagesFor emacs29-pgtk).emacsWithPackages (epkgs: with epkgs; [ # Theme doom-themes # completion-packages cape consult corfu corfu-terminal embark embark-consult marginalia orderless vertico # ide-packages editorconfig aggressive-indent ibuffer-project # custom treesit-grammars.with-all-grammars treesit-auto apheleia direnv nix-mode rust-mode # org-packages denote org-appear # ui-packages all-the-icons elisp-demos helpful # workspaces-packages tabspaces # writing-packages markdown-mode pandoc-mode auctex auctex-latexmk # email-packages notmuch notmuch-indicator # feed-packages elfeed elfeed-org elfeed-webkit elfeed-tube elfeed-tube-mpv # Additional packages which-key magit vterm ])); }; home = { packages = with pkgs; [ # Emacs dependencies coreutils gnutls ripgrep cmake fd imagemagick zstd graphviz zip unzip # Language-specific requirements (aspellWithDicts (ds: with ds; [ en en-computers en-science ])) languagetool wordnet findutils sqlite pandoc gfortran rustup texlive.combined.scheme-medium python3 nodePackages.stylelint ]; }; }