init
This commit is contained in:
162
modules/home/editors/doom-emacs.nix
Normal file
162
modules/home/editors/doom-emacs.nix
Normal file
@@ -0,0 +1,162 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
emacs-gtk
|
||||
git
|
||||
lazygit
|
||||
ripgrep
|
||||
libtool
|
||||
cmake
|
||||
pkg-config
|
||||
# Spell checking
|
||||
hunspell
|
||||
hunspellDicts.en_US
|
||||
hunspellDicts.en_AU
|
||||
hunspellDicts.es_ES
|
||||
# LSP servers
|
||||
clang-tools # C/C++ LSP
|
||||
nil # Nix LSP
|
||||
];
|
||||
|
||||
home.file.".doom.d/init.el".text = ''
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
(doom!
|
||||
:completion
|
||||
(company +auto)
|
||||
(vertico +icons)
|
||||
|
||||
:ui
|
||||
doom
|
||||
doom-dashboard
|
||||
doom-quit
|
||||
hl-todo
|
||||
modeline
|
||||
nav-flash
|
||||
ophints
|
||||
(popup +defaults)
|
||||
(ligatures +extra)
|
||||
tabs
|
||||
treemacs
|
||||
vi-tilde-fringe
|
||||
window-select
|
||||
|
||||
:editor
|
||||
(evil +everywhere)
|
||||
file-templates
|
||||
fold
|
||||
multiple-cursors
|
||||
snippets
|
||||
word-wrap
|
||||
|
||||
:emacs
|
||||
(dired +icons)
|
||||
electric
|
||||
(ibuffer +icons)
|
||||
(undo +tree)
|
||||
vc
|
||||
|
||||
:term
|
||||
vterm
|
||||
|
||||
:checkers
|
||||
(syntax +flymake)
|
||||
(spell +flyspell)
|
||||
grammar
|
||||
|
||||
:tools
|
||||
(eval +overlay)
|
||||
(lookup +docsets)
|
||||
lsp
|
||||
(magit +forge)
|
||||
pdf
|
||||
tree-sitter
|
||||
|
||||
:lang
|
||||
bash
|
||||
(c +lsp)
|
||||
css
|
||||
docker
|
||||
html
|
||||
(json +lsp)
|
||||
markdown
|
||||
(nix +tree-sitter +lsp)
|
||||
toml
|
||||
yaml
|
||||
|
||||
:config
|
||||
(default +bindings +smartparens))
|
||||
'';
|
||||
|
||||
home.file.".doom.d/config.el".text = ''
|
||||
;;; config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(setq doom-theme 'doom-one)
|
||||
(setq display-line-numbers-type 'relative)
|
||||
(setq nerd-icons-font-family "JetBrainsMono Nerd Font")
|
||||
|
||||
;; Git configuration
|
||||
(after! magit
|
||||
;; Set default git editor to emacsclient
|
||||
(setq with-editor-emacsclient-executable "emacsclient")
|
||||
;; Show word-granularity differences within diff hunks
|
||||
(setq magit-diff-refine-hunk t)
|
||||
;; Auto-refresh magit buffers
|
||||
(setq magit-refresh-status-buffer t))
|
||||
|
||||
;; Lazygit integration
|
||||
(defun my/lazygit ()
|
||||
"Open lazygit in a terminal."
|
||||
(interactive)
|
||||
(if (fboundp 'vterm)
|
||||
(let ((default-directory (magit-toplevel)))
|
||||
(vterm "*lazygit*")
|
||||
(vterm-send-string "lazygit")
|
||||
(vterm-send-return))
|
||||
(async-shell-command "lazygit" "*lazygit*")))
|
||||
|
||||
;; LSP configuration
|
||||
(after! lsp-mode
|
||||
(setq lsp-signature-auto-activate t
|
||||
lsp-signature-render-documentation t
|
||||
lsp-completion-provider :company-capf
|
||||
lsp-idle-delay 0.1))
|
||||
|
||||
;; Nix LSP (nil) configuration
|
||||
(with-eval-after-load 'lsp-nix-nil
|
||||
(setq lsp-nix-nil-auto-eval-inputs t))
|
||||
|
||||
;; Company completion settings
|
||||
(after! company
|
||||
(setq company-idle-delay 0.2
|
||||
company-minimum-prefix-length 1
|
||||
company-tooltip-align-annotations t
|
||||
company-require-match 'never))
|
||||
|
||||
;; Spell checking configuration
|
||||
(after! ispell
|
||||
(setq ispell-program-name "hunspell")
|
||||
(setq ispell-local-dictionary "en_US")
|
||||
(setq ispell-local-dictionary-alist
|
||||
'(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US") nil utf-8))))
|
||||
|
||||
;; Git keybindings
|
||||
(map! :leader
|
||||
(:prefix-map ("g" . "git")
|
||||
:desc "Magit status" "g" #'magit-status
|
||||
:desc "Magit dispatch" "d" #'magit-dispatch
|
||||
:desc "Magit file dispatch" "f" #'magit-file-dispatch
|
||||
:desc "Magit blame" "b" #'magit-blame-addition
|
||||
:desc "Git time machine" "t" #'git-timemachine-toggle
|
||||
:desc "Lazygit" "l" #'my/lazygit
|
||||
:desc "Git stage file" "s" #'magit-stage-file
|
||||
:desc "Git unstage file" "u" #'magit-unstage-file))
|
||||
'';
|
||||
|
||||
home.file.".doom.d/packages.el".text = ''
|
||||
;;; packages.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Git-related packages
|
||||
(package! git-timemachine)
|
||||
'';
|
||||
}
|
||||
Reference in New Issue
Block a user