{ config, pkgs, ... }: { programs.emacs = { # Clone emacs config from https://git.xenia.me.uk/xenia/emacs.git enable = true; package = pkgs.emacs29-pgtk; extraConfig = ''(org-babel-load-file "~/Projects/emacs/README.org")''; extraPackages = epkgs: with epkgs; [ # theme catppuccin-theme # completion-packages cape consult corfu corfu-terminal embark embark-consult marginalia orderless vertico # snippets-packages tempel tempel-collection # ide-packages vterm flymake-popon treesit-grammars.with-all-grammars treesit-auto apheleia direnv goto-chg rainbow-delimiters aggressive-indent nix-mode rust-mode lua-mode # media-packages emms # org-packages org-noter org-cliplink org-journal org-modern citar citar-embark citar-org-roam khalel # project-packages ibuffer-project 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 diff-hl treemacs treemacs-magit treemacs-nerd-icons # 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.xenia.me.uk"; ListenAddress = "127.0.0.1"; ListenPort = 8008; SSL = false; UseKeyring = true; IgnoreVerification = true; }; }; }; }; home.packages = with pkgs; [ # Emacs requirements fd ripgrep imagemagick languagetool wordnet (aspellWithDicts (ds: with ds; [ en en-computers en-science ])) # For EMMS mp3info # Language-specific requirements sqlite pandoc texlive.combined.scheme-full ghostscript mupdf poppler_utils # Linters nodePackages.stylelint # Formatters nodePackages.prettier nixfmt black isort fprettify ruff rustfmt stylua shfmt # LSP Servers nil fortls shellcheck rust-analyzer luajitPackages.lua-lsp python3Packages.python-lsp-server nodePackages.yaml-language-server nodePackages.bash-language-server ]; }