nixos/system/home/emacs/default.nix
Evie Litherland-Smith 94a20654cd Move use-package and base16 config to early-init.el
Ensure it's run before use-package is used or theme is loaded, since
nix puts these at the start of the extra config block

Run vdirsyncer when khalel first loaded, before importing, to make
sure things are up to date. No run at startup so only affects when
first opening email/org-agenda
2024-12-04 07:07:59 +00:00

131 lines
2.7 KiB
Nix

{ config, pkgs, ... }:
{
imports = [
../shell/default.nix
../shell/git.nix
../gpg/default.nix
];
home.file.".emacs.d/early-init.el".text = ''
(setopt use-package-check-before-init t
use-package-enable-imenu-support t
base16-theme-distinct-fringe-background t
base16-theme-highlight-mode-line 'contrast)
'';
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
python-pytest
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
lua-language-server
rust-analyzer
python3Packages.python-lsp-server
nodePackages.typescript-language-server
];
xdg.configFile."ruff/pyproject.toml".source = ./ruff.toml;
}