nichts/modules/programs/editors/emacs.nix
2024-08-20 16:43:24 +02:00

126 lines
2.3 KiB
Nix

{
config,
lib,
pkgs,
inputs,
...
}: let
cfg = config.modules.system.programs.editors.emacs;
inherit (config.modules.other.system) username;
inherit (lib) mkIf;
# Taken from outfoxxed since figuring this out is really annoying.
newpkgs =
pkgs.appendOverlays
(with inputs.emacs-overlay.overlays; [
emacs
package
]);
tree-sitter-parsers = grammars:
with grammars; [
tree-sitter-dot
tree-sitter-elisp
tree-sitter-markdown
tree-sitter-markdown-inline
];
custom-emacs = with newpkgs; ((emacsPackagesFor (emacs29-pgtk.override {withNativeCompilation = true;})).emacsWithPackages (epkgs:
with epkgs; [
alert
all-the-icons
all-the-icons-dired
avy
beacon
catppuccin-theme
cask-mode
company
crux
dimmer
dired-du
dired-open
direnv
dirvish
doom-modeline
editorconfig
emacs-all-the-icons-fonts
evil
evil-collection
evil-commentary
evil-goggles
flycheck
flycheck-relint
flymake
form-feed
general
hl-todo
ligature
lsp-mode
lsp-treemacs
lsp-ui
macrostep
magit
markdown-mode
modus-themes
move-text
org-cliplink
org-contacts
org-pomodoro
nano-theme
no-littering
nov
paredit
peep-dired
projectile
rainbow-delimiters
rainbow-mode
relint
ripgrep
smartparens
string-inflection
svg-lib
tldr
toc-org
(treesit-grammars.with-grammars tree-sitter-parsers)
treemacs
treemacs-evil
treemacs-projectile
treemacs-magit
tree-sitter
undo-tree
use-package
vertico
vertico-posframe
vterm
vterm-toggle
which-key
whitespace-cleanup-mode
wakatime-mode
ws-butler
]));
in {
config = mkIf cfg.enable {
home-manager.users.${username} = {
home.packages = with pkgs; [
custom-emacs
clang-tools
ripgrep
fd
imagemagick
ispell
mediainfo
findutils
graphviz
djvulibre
hunspell
poppler
sqlite
unzip
];
services.emacs = {
enable = true;
package = custom-emacs;
};
};
};
}