nichts/modules/editors/emacs.nix

175 lines
3.7 KiB
Nix
Raw Normal View History

2024-05-22 14:29:45 +02:00
{
config,
lib,
pkgs,
inputs,
...
2024-07-18 18:07:07 +02:00
}: let
2024-07-20 13:18:01 +02:00
cfg = config.modules.system.programs.editors.emacs;
2024-07-16 11:13:12 +02:00
inherit (config.modules.other.system) username;
2024-07-20 13:18:01 +02:00
inherit (lib) mkIf;
2024-07-18 18:07:07 +02:00
newpkgs =
pkgs.appendOverlays
(with inputs.emacs-overlay.overlays; [
emacs
package
2024-07-18 18:07:07 +02:00
(final: prev: {
tree-sitter = prev.tree-sitter.override {
extraGrammars = {
tree-sitter-qmljs = {
version = "master";
src = pkgs.fetchFromGitHub {
owner = "yuja";
repo = "tree-sitter-qmljs";
rev = "35ead5b9955cdb29bcf709d622fa960ff33992b6";
sha256 = "jT47lEGuk6YUjcHB0ZMyL3i5PqyUaCQmt0j78cUpy8Q=";
};
};
};
};
})
]);
2024-07-18 18:07:07 +02:00
tree-sitter-parsers = grammars:
with grammars; [
tree-sitter-bash
tree-sitter-c
tree-sitter-c-sharp
tree-sitter-cmake
tree-sitter-cpp
tree-sitter-css
tree-sitter-dot
tree-sitter-elisp
tree-sitter-glsl
tree-sitter-html
tree-sitter-java
tree-sitter-javascript
tree-sitter-json
tree-sitter-json5
tree-sitter-kotlin
tree-sitter-latex
tree-sitter-llvm
tree-sitter-lua
tree-sitter-make
tree-sitter-markdown
tree-sitter-markdown-inline
tree-sitter-nickel
tree-sitter-nix
tree-sitter-prisma
tree-sitter-python
tree-sitter-qmljs
tree-sitter-regex
tree-sitter-rust
tree-sitter-scss
tree-sitter-sql
tree-sitter-toml
tree-sitter-tsx
tree-sitter-typescript
2024-07-19 22:54:10 +02:00
tree-sitter-typst
2024-07-18 18:07:07 +02:00
tree-sitter-vim
tree-sitter-yaml
];
2024-07-18 18:07:07 +02:00
custom-emacs = with newpkgs; ((emacsPackagesFor (emacs29-pgtk.override {withNativeCompilation = true;})).emacsWithPackages (epkgs:
with epkgs; let
qml-ts-mode = trivialBuild {
pname = "qml-ts-mode";
version = "master";
src = fetchFromGitHub {
owner = "outfoxxed";
repo = "qml-ts-mode";
rev = "b24b9e78305ed045baa136782623ad16de01b7b8";
sha256 = "PgXm/a92cX5zjA9blTrIRH7DfOUczRwb9oBcMMEzF2I=";
};
};
in [
2024-07-19 22:54:10 +02:00
alert
2024-07-18 18:07:07 +02:00
all-the-icons
all-the-icons-dired
avy
beacon
#better-jumper
2024-07-19 22:54:10 +02:00
catppuccin-theme
2024-07-18 18:07:07 +02:00
company
crux
#cmake-font-lock
2024-07-18 18:07:25 +02:00
dimmer
dired-du
2024-07-19 22:54:10 +02:00
dired-open
2024-07-18 18:07:07 +02:00
direnv
doom-modeline
editorconfig
evil
evil-collection
evil-goggles
2024-07-19 22:54:10 +02:00
erc
erc-hl-nicks
2024-07-18 18:07:07 +02:00
# face-explorer
flycheck
2024-07-18 18:07:25 +02:00
form-feed
2024-07-18 18:07:07 +02:00
general
# frames-only-mode
# fussy
# groovy-mode
2024-07-18 18:07:25 +02:00
hl-todo
2024-07-18 18:07:07 +02:00
# just-mode
kotlin-mode
2024-07-18 18:07:25 +02:00
ligature
2024-07-18 18:07:07 +02:00
lsp-mode
lsp-treemacs
lsp-ui
lsp-java
magit
markdown-mode
nasm-mode
nix-mode
2024-07-19 22:54:10 +02:00
no-littering
2024-07-18 18:07:07 +02:00
reformatter # required by nix mode
2024-07-18 18:07:25 +02:00
pdf-tools
peep-dired
2024-07-18 18:07:07 +02:00
projectile
qml-ts-mode
2024-07-18 18:07:25 +02:00
rainbow-delimiters
2024-07-18 18:07:07 +02:00
rainbow-mode
2024-07-19 22:54:10 +02:00
smartparens
2024-07-18 18:07:07 +02:00
string-inflection
2024-07-18 18:07:25 +02:00
tldr
2024-07-18 18:07:07 +02:00
toc-org
(treesit-grammars.with-grammars (grammars: tree-sitter-parsers grammars))
treemacs
treemacs-evil
treemacs-projectile
treemacs-magit
undo-tree
use-package
vertico
2024-07-18 18:07:25 +02:00
vterm
vterm-toggle
2024-07-18 18:07:07 +02:00
which-key
wakatime-mode
ws-butler
]));
in {
config = mkIf cfg.enable {
home-manager.users.${username} = {
2024-07-20 12:08:25 +02:00
home.packages = with pkgs; [
custom-emacs
clang-tools
ripgrep
fd
ispell
findutils
graphviz
djvulibre
sqlite
];
2024-07-18 18:07:07 +02:00
services.emacs = {
enable = true;
package = custom-emacs;
};
};
};
}