{ config, pkgs, crafted-emacs, ... }: { xdg.configFile = { "emacs/init.el".source = ./init.el; "emacs/snippets".source = ./snippets; "emacs/modules".source = ./modules; "emacs/crafted-emacs".source = crafted-emacs; }; programs.emacs = { enable = true; package = pkgs.emacs29-pgtk; extraPackages = epkgs: with epkgs; [ # completion-packages cape consult corfu corfu-terminal embark embark-consult marginalia orderless vertico # ide-packages editorconfig aggressive-indent ibuffer-project treesit-grammars.with-all-grammars treesit-auto apheleia direnv goto-chg rainbow-delimiters yasnippet yasnippet-snippets nix-mode rust-mode # media-packages emms # org-packages org-roam org-appear org-cliplink org-journal org-modern citar citar-embark citar-org-roam khalel # project-packages magit git-gutter # social-packages mastodon # ui-packages all-the-icons nerd-icons nerd-icons-completion nerd-icons-dired nerd-icons-ibuffer page-break-lines dashboard doom-modeline helpful which-key link-hint # writing-packages pdf-tools markdown-mode pandoc-mode auctex auctex-latexmk # email-packages mu4e mu4e-alert # feed-packages elfeed elfeed-org elfeed-webkit elfeed-tube elfeed-tube-mpv ]; }; services.git-sync = { enable = true; repositories = with config.home; { org = { path = "${homeDirectory}/Org"; uri = "git+https://git.xenia.me.uk/xenia/Org.git"; }; references = { path = "${homeDirectory}/.references"; uri = "git+https://git.xenia.me.uk/xenia/references.git"; }; elfeed = { path = "${homeDirectory}/.elfeed"; uri = "git+https://git.xenia.me.uk/xenia/elfeed.git"; }; }; }; home.packages = with pkgs; [ # Emacs requirements coreutils fd ripgrep imagemagick languagetool wordnet (aspellWithDicts (ds: with ds; [ en en-computers en-science ])) # Language-specific requirements sqlite pandoc gfortran rustup texlive.combined.scheme-full ghostscript mupdf (python3.withPackages (ps: with ps; [ python-lsp-server python-lsp-ruff pylsp-mypy ])) # Linters nodePackages.stylelint # Formatters nixfmt beautysh black isort nodePackages.fixjson fprettify shellharden shfmt stylua python3Packages.mdformat html-tidy nodePackages.js-beautify # LSP Servers nixd fortls shellcheck marksman luajitPackages.lua-lsp # nodePackages.pyright nodePackages.yaml-language-server nodePackages.bash-language-server nodePackages.javascript-typescript-langserver nodePackages.vscode-html-languageserver-bin nodePackages.vscode-css-languageserver-bin nodePackages.vscode-json-languageserver-bin nodePackages.dockerfile-language-server-nodejs ]; }