163 lines
3.7 KiB
Nix
163 lines
3.7 KiB
Nix
{ 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)
|
|
'';
|
|
}
|