feat(emacs): robust Nix-based Emacs setup with daemon service, improved elisp dev, and full package documentation

- Emacs daemon runs as a systemd service via Nix
- Modular Emacs config with Nix-managed packages (elisp-slime-nav, aggressive-indent, highlight-defined, etc.)
- Keybinding fixes and error handling improvements
- New EMACS_README.md explains ecosystem and troubleshooting
- Nix config: GUI sudo askpass, podman, and desktop tweaks
- All errors from missing packages and keybindings resolved
This commit is contained in:
Geir Okkenhaug Jerstad 2025-07-03 20:39:07 +02:00
parent 649f0f3b2c
commit 251222037d
7 changed files with 132 additions and 10 deletions

View file

@ -25,7 +25,7 @@
(menu-bar-mode -1)
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(set-face-attribute 'default nil :height 140)
(set-face-attribute 'default nil :height 100)
(setq-default cursor-type 'bar)
;; Nix Integration Setup
@ -93,6 +93,26 @@
(package-refresh-contents)
(package-install 'use-package)))
;; Quelpa setup for packages not available in standard repos
(unless (package-installed-p 'quelpa)
(with-temp-buffer
(url-insert-file-contents "https://raw.githubusercontent.com/quelpa/quelpa/master/quelpa.el")
(eval-buffer)
(quelpa-self-upgrade)))
;; Install quelpa-use-package for integration
(unless (package-installed-p 'quelpa-use-package)
(quelpa 'quelpa-use-package))
(require 'quelpa-use-package)
;; Install eat terminal emulator (not available in standard repos)
(unless (package-installed-p 'eat)
(quelpa '(eat :fetcher git
:url "https://codeberg.org/akib/emacs-eat.git"
:files ("*.el" "dir"
"*.info" "*.texi"
"*.ti" ("e" "e/*")))))
;; Configure use-package for Nix integration
(require 'use-package)
;; Don't auto-install packages in Nix environment - they're pre-provided

View file

@ -96,12 +96,12 @@
(claude-code-send-command
(format "I'm getting an error around line %d. Here's the context:\n\n```%s\n%s\n```\n\nCan you help me fix this?"
error-line
(or (file-name-extension (buffer-file-name)) "")
(or (and buffer-file-name (file-name-extension buffer-file-name)) "")
context)))
(message "Claude Code is not running. Start it with C-c C-c c")))
;; Keybinding for enhanced error context
(global-set-key (kbd "C-c C-c x") #'claude-code-send-error-context)
(global-set-key (kbd "C-c c x") #'claude-code-send-error-context)
;; Project-aware Claude instances
(defun claude-code-project-instance ()
@ -113,7 +113,7 @@
(claude-code)))
;; Keybinding for project-specific Claude
(global-set-key (kbd "C-c C-c p") #'claude-code-project-instance)
(global-set-key (kbd "C-c c p") #'claude-code-project-instance)
(provide 'claude-code)
;;; claude-code.el ends here

View file

@ -160,9 +160,10 @@
;; Better compilation output
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(setq-local compile-command
(format "emacs -batch -f batch-byte-compile %s"
(shell-quote-argument buffer-file-name)))))
(when buffer-file-name
(setq-local compile-command
(format "emacs -batch -f batch-byte-compile %s"
(shell-quote-argument buffer-file-name))))))
(provide 'elisp-development)
;;; elisp-development.el ends here