nichts/modules/programs/editors/emacs/module2.nix

140 lines
3.2 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.
pkgswithemacs =
pkgs.appendOverlays
(with inputs.emacs-overlay.overlays; [
emacs
package
]);
custom-emacs = with pkgswithemacs; ((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-all-grammars
# 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 {
environment.variables.PATH = ["$XDG_CONFIG_HOME/emacs/bin"];
home-manager.users.${username} = {
home.packages = with pkgs; [
# needed my native-comp
binutils
# Emacs itself
custom-emacs
# Doom dependencies
git
ripgrep
gnutls
clang-tools
## Optional dependencies
fd # faster projectile indexing
imagemagick # for image-dired
# (mkIf (config.programs.gnupg.agent.enable)
# pinentry-emacs) # in-emacs gnupg prompts
zstd # for undo-fu-session/undo-tree compression
nodePackages.prettier
# Module dependencies
# :checkers spell
(aspellWithDicts (ds: with ds; [de en en-computers en-science]))
# :tools editorconfig
editorconfig-core-c # per-project style config
# :tools lookup & :lang org +roam
sqlite
# :lang latex & :lang org (latex previews)
texlive.combined.scheme-medium
# :lang beancount
# beancount
# fava
# :lang nix
age
];
services.emacs = {
enable = true;
package = custom-emacs;
};
};
};
}