nixos/home/emacs.nix

129 lines
2.6 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
catppuccin-theme
# 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
vterm
flymake-popon
treesit-grammars.with-all-grammars
treesit-auto
apheleia
direnv
goto-chg
rainbow-delimiters
aggressive-indent
nix-mode
lua-mode
cargo
# media-packages
emms
# org-packages
org-alert
org-noter
org-cliplink
org-journal
org-modern
citar
citar-embark
citar-org-roam
gnuplot
khalel
# project-packages
ibuffer-project
magit
forge
# social-packages
mastodon
# ui-packages
all-the-icons
nerd-icons
nerd-icons-completion
nerd-icons-corfu
nerd-icons-dired
nerd-icons-ibuffer
ligature
page-break-lines
doom-modeline
helpful
which-key
link-hint
dashboard
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 = {
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";
};
};
};
};
}