159 lines
3 KiB
Nix
159 lines
3 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
|
|
rainbow-delimiters
|
|
aggressive-indent
|
|
nix-mode
|
|
lua-mode
|
|
cargo
|
|
|
|
# media-packages
|
|
emms
|
|
|
|
# org-packages
|
|
org-roam
|
|
org-alert
|
|
org-noter
|
|
org-journal
|
|
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
|
|
diff-hl
|
|
|
|
# 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
|
|
];
|
|
}
|