{ config, pkgs, crafted-emacs, ... }: { imports = [ ./formatters.nix ./lsp_servers.nix ./tree-sitter.nix ]; stylix.targets.emacs.enable = false; xdg.configFile = { "emacs/init.el".source = ./init.el; "emacs/modules".source = ./modules; "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 # crafted-completion-packages cape consult corfu corfu-terminal embark embark-consult marginalia orderless vertico # crafted-ide-packages treesit-auto editorconfig aggressive-indent ibuffer-project # crafted-org-packages denote org-appear # crafted-ui-packages all-the-icons elisp-demos helpful # crafted-workspaces-packages tabspaces # crafted-writing-packages markdown-mode pandoc-mode auctex auctex-latexmk # Additional packages magit vterm direnv nix-mode rust-mode ])); }; 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 ]; }; }