{ config, pkgs, ... }: { xdg.configFile = { "emacs/init.el".source = ./init.el; "emacs/snippets".source = ./snippets; }; programs.emacs = { enable = true; package = pkgs.emacs29-pgtk; extraPackages = epkgs: with epkgs; [ # theme modus-themes # completion-packages cape consult corfu corfu-terminal embark embark-consult marginalia orderless vertico # snippets-packages yasnippet yasnippet-snippets consult-yasnippet # ide-packages vterm ibuffer-project treesit-grammars.with-all-grammars treesit-auto apheleia direnv goto-chg rainbow-delimiters nix-mode anaconda-mode rust-mode lua-mode # media-packages emms # org-packages org-roam org-noter org-cliplink org-journal org-modern citar citar-embark citar-org-roam khalel # project-packages magit forge # social-packages mastodon ement # ui-packages all-the-icons nerd-icons nerd-icons-completion nerd-icons-dired nerd-icons-ibuffer ligature page-break-lines doom-modeline helpful which-key link-hint darkroom shackle # writing-packages markdown-mode pandoc-mode auctex auctex-latexmk latex-preview-pane # email-packages mu4e mu4e-alert # feed-packages elfeed elfeed-org 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"; }; }; }; pantalaimon = { enable = true; settings = { Default = { LogLevel = "Debug"; SSL = true; }; local-matrix = { Homeserver = "https://matrix.tchncs.de"; ListenAddress = "127.0.0.1"; ListenPort = 8008; }; }; }; }; 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 texlive.combined.scheme-full ghostscript mupdf gfortran rustup (python3.withPackages (ps: with ps; [ python-lsp-server python-lsp-ruff pylsp-mypy numpy scipy matplotlib xarray ])) # Linters nodePackages.stylelint # Formatters nixfmt beautysh black isort nodePackages.fixjson fprettify shellharden shfmt stylua python3Packages.mdformat html-tidy # LSP Servers nil fortls shellcheck marksman luajitPackages.lua-lsp 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 ]; }