{ config, pkgs, ... }: { imports = [ ../shell/default.nix ../shell/git.nix ../gpg/default.nix ]; services.emacs = { enable = true; package = config.programs.emacs.finalPackage; defaultEditor = true; client.enable = true; socketActivation.enable = false; startWithUserSession = "graphical"; }; programs.emacs = { # Clone emacs config from https://git.xenia.me.uk/pixelifytica/emacs.git enable = true; package = pkgs.emacs29.override { withImageMagick = true; withPgtk = true; }; extraConfig = builtins.readFile ./init.el; extraPackages = epkgs: with epkgs; [ # UI and Appearance delight nerd-icons nerd-icons-dired nerd-icons-ibuffer nerd-icons-corfu visual-fill-column # Email and Calendar khalel mu4e # Other (TODO sort) ligature which-key diff-hl org org-roam org-noter citar vertico marginalia orderless corfu corfu-terminal cape consult consult-eglot tempel tempel-collection rainbow-delimiters envrc treesit-grammars.with-all-grammars treesit-auto apheleia flymake-shellcheck flymake-yamllint flymake-clippy flymake-eslint magit forge nix-mode lua-mode python-docstring auctex markdown-mode pandoc-mode scad-mode ]; }; home.packages = with pkgs; [ # Plugin requirements gcc sqlite languagetool wordnet pandoc ghostscript poppler_utils graphviz-nox # Customised LaTeX install (texlive.combine { inherit (texlive) scheme-medium dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of listings bera ; latex-beamer-ukaea.pkgs = [ (callPackage ./texlive/latex-beamer-ukaea/default.nix { }) ]; }) ## Linters shellcheck yamllint ruff ## Formatters nixfmt-rfc-style shfmt stylua nodePackages.prettier nodePackages.prettier-plugin-toml ## Language servers nixd ## Interpreters (python3.withPackages ( ps: with ps; [ tkinter python-lsp-server pylsp-rope rope flake8 isort mypy numpy scipy xarray matplotlib ] )) ]; xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml; }