Evie Litherland-Smith
c006895344
Move emacs dependencies into home/emacs/default.nix to avoid having two files Don't start emacs server from hyprland startup now Remove firefox home module, use system module only
164 lines
3.1 KiB
Nix
164 lines
3.1 KiB
Nix
{ 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 "~/.emacs/README.org")'';
|
|
extraPackages = epkgs:
|
|
with epkgs; [
|
|
# theme
|
|
modus-themes
|
|
|
|
# spell-checking
|
|
flyspell-correct
|
|
consult-flyspell
|
|
|
|
# password-store
|
|
password-store
|
|
password-store-otp
|
|
pass # password-store major mode
|
|
|
|
# completion-packages
|
|
cape
|
|
consult
|
|
consult-eglot
|
|
consult-yasnippet
|
|
corfu
|
|
corfu-terminal
|
|
embark
|
|
embark-consult
|
|
marginalia
|
|
orderless
|
|
vertico
|
|
|
|
# snippets-packages
|
|
yasnippet
|
|
yasnippet-snippets
|
|
yasnippet-capf
|
|
|
|
# ide-packages
|
|
treesit-grammars.with-all-grammars
|
|
treesit-auto
|
|
flymake-popon
|
|
flymake-shellcheck
|
|
apheleia
|
|
direnv
|
|
goto-chg
|
|
rainbow-delimiters
|
|
aggressive-indent
|
|
nix-mode
|
|
lua-mode
|
|
cargo
|
|
|
|
# media-packages
|
|
emms
|
|
|
|
# org-packages
|
|
org-alert
|
|
org-noter
|
|
org-journal
|
|
org-present
|
|
citar
|
|
citar-embark
|
|
gnuplot
|
|
|
|
# project-packages
|
|
ibuffer-project
|
|
magit
|
|
forge
|
|
|
|
# ui-packages
|
|
all-the-icons
|
|
nerd-icons
|
|
nerd-icons-completion
|
|
nerd-icons-corfu
|
|
nerd-icons-dired
|
|
nerd-icons-ibuffer
|
|
diminish
|
|
ligature
|
|
page-break-lines
|
|
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
|
|
|
|
# feed-packages
|
|
elfeed
|
|
elfeed-org
|
|
elfeed-tube
|
|
elfeed-tube-mpv
|
|
];
|
|
};
|
|
services.emacs = {
|
|
enable = true;
|
|
package = config.programs.emacs.finalPackage;
|
|
startWithUserSession = false;
|
|
defaultEditor = true;
|
|
client.enable = true;
|
|
socketActivation.enable = true;
|
|
};
|
|
home.packages = with pkgs; [
|
|
# Emacs requirements
|
|
fd
|
|
ripgrep
|
|
imagemagick
|
|
languagetool
|
|
wordnet
|
|
(aspellWithDicts (ds: with ds; [ en en-computers en-science ]))
|
|
|
|
# For org-plot
|
|
gnuplot
|
|
|
|
# For EMMS
|
|
mp3info
|
|
|
|
# Language-specific requirements
|
|
sqlite
|
|
pandoc
|
|
ghostscript
|
|
mupdf
|
|
poppler_utils
|
|
|
|
# Customised LaTeX install
|
|
# texlive.combined.scheme-full
|
|
(texlive.combine {
|
|
inherit (pkgs.texlive)
|
|
scheme-basic dvisvgm dvipng wrapfig amsmath ulem hyperref capt-of;
|
|
})
|
|
|
|
# Linters
|
|
shellcheck
|
|
|
|
# Formatters
|
|
nodePackages.prettier
|
|
nixfmt
|
|
ruff
|
|
isort
|
|
fprettify
|
|
rustfmt
|
|
stylua
|
|
shfmt
|
|
|
|
# LSP Servers
|
|
nil
|
|
fortls
|
|
rust-analyzer
|
|
luajitPackages.lua-lsp
|
|
python3Packages.jedi-language-server
|
|
];
|
|
}
|