aboutsummaryrefslogtreecommitdiff
path: root/nix/users/fcuny
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--nix/users/fcuny/configs/emacs/init.el657
-rw-r--r--nix/users/fcuny/emacs.nix82
2 files changed, 264 insertions, 475 deletions
diff --git a/nix/users/fcuny/configs/emacs/init.el b/nix/users/fcuny/configs/emacs/init.el
index edbbe40..aa12575 100644
--- a/nix/users/fcuny/configs/emacs/init.el
+++ b/nix/users/fcuny/configs/emacs/init.el
@@ -4,146 +4,75 @@
;;; Code:
-(defconst emacs-start-time (current-time))
-
-(defun report-time-since-load ()
- "Report how long it takes to load my Emacs configuration."
- (message "[after-init ]Loading init...done (%.3fs)"
- (float-time (time-subtract (current-time) emacs-start-time))))
-
-(add-hook 'after-init-hook #'(lambda () (report-time-since-load)) t)
-
-(setq sentence-end-double-space nil ;; it matters for filling
- create-lockfiles nil ;; don't use a lock file
- initial-major-mode 'fundamental-mode ;; default mode for the scratch buffer
- initial-scratch-message "" ;; makes the scratch buffer empty
- confirm-kill-emacs #'yes-or-no-p ;; ask before killing emacs
- use-short-answers t ;; use y-or-n
- ring-bell-function 'ignore ;; really no bell
- visible-bell nil ;; no bell
- delete-by-moving-to-trash t ;; delete files by moving them to the trash
- history-delete-duplicates t ;; delete duplicate from history
- require-final-newline t ;; ensure a new line is present at the bottom of files
- auto-save-default nil ;; no auto save
- backup-inhibited t ;; no backups
- )
-
-;; Use UTF-8 everywhere
+;; use utf-8 everywhere
(set-default-coding-systems 'utf-8)
-(use-package recentf
- :custom
- (recentf-max-saved-items 2000)
- (recentf-max-menu-items 200)
- (recentf-exclude
- '("~\\'" "\\`out\\'" "\\.log\\'" "^/[^/]*:" "\\.el\\.gz\\'" "\\.gz\\'"))
- :config
- (recentf-mode t))
-
-(use-package savehist
- :hook (after-init . savehist-mode)
- :config
- (setq history-length 100)
- (setq history-delete-duplicates t)
- (setq savehist-save-minibuffer-history t)
- (savehist-mode t))
-
-(use-package saveplace
- :config
- (save-place-mode t))
-
-(use-package autorevert
- :custom
- (auto-revert-use-notify nil)
- :config
- (global-auto-revert-mode t))
-
+(require 'ibuffer)
+(require 'imenu)
+(require 'midnight)
+
+(setq auto-save-default nil) ;; no auto save
+(setq backup-inhibited t) ;; no backups
+(setq confirm-kill-emacs #'yes-or-no-p) ;; ask before killing emacs
+(setq create-lockfiles nil) ;; don't use a lock file
+(setq cursor-in-non-selected-windows nil) ;; keep cursors and highlights in current window only
+(setq delete-by-moving-to-trash t) ;; delete files by moving them to the trash
+(setq highlight-nonselected-windows nil) ;; don't highlight inactive windows
+(setq history-delete-duplicates t) ;; delete duplicate from history
+(setq ibuffer-expert t) ;; set expert mode
+(setq ibuffer-jump-offer-only-visible-buffers t)
+(setq ibuffer-maybe-show-predicates '("^\\*.*\\*$"))
+(setq ibuffer-use-other-window t)
+(setq imenu-auto-rescan t) ;; rescan automatically
+(setq initial-major-mode 'fundamental-mode) ;; default mode for the scratch buffer
+(setq initial-scratch-message "") ;; makes the scratch buffer empty
+(setq midnight-period (* 3600 6)) ;; clear buffer every 6 hours
+(setq mode-line-default-help-echo nil) ;; don't say anything on mode-line mouseover
+(setq require-final-newline t) ;; ensure a new line is present at the bottom of files
+(setq ring-bell-function 'ignore) ;; really no bell
+(setq sentence-end-double-space nil) ;; it matters for filling
+(setq use-short-answers t) ;; use y-or-n
+(setq visible-bell nil) ;; no bell
+(setq bidi-display-reordering nil) ;; disable bidirectional text support for slight performance bonus
+(setq column-number-mode t) ;; show column number in the mode line
+
+;; global minor modes
+(fringe-mode '(8 . 0))
+(global-auto-revert-mode t)
+(save-place-mode t)
+(which-key-mode t)
+
+(require 'savehist)
+(savehist-mode t)
+(setq history-length 100
+ history-delete-duplicates t
+ savehist-save-minibuffer-history t)
+
+(require 'recentf)
+(recentf-mode t)
+(setq recentf-max-saved-items 2000
+ recentf-max-menu-items 200)
+
+;; some key bindings
(global-set-key (kbd "M-j") 'join-line)
-
-(use-package which-key
- :diminish
- :hook (after-init . which-key-mode))
-
-(use-package imenu
- :config
- (setq imenu-auto-rescan t))
-
-(use-package exec-path-from-shell
- :init
- (exec-path-from-shell-initialize))
-
-(use-package ibuffer
- :bind ("C-x C-b" . ibuffer)
- :custom
- (ibuffer-expert t)
- (ibuffer-show-empty-filter-groups nil)
- (ibuffer-jump-offer-only-visible-buffers t)
- (ibuffer-maybe-show-predicates '("^\\*.*\\*$"))
- (ibuffer-never-show-predicates '("^ "))
- (ibuffer-use-other-window t))
-
-(use-package midnight
- :custom
- ;; every 6 hours
- (midnight-period (* 3600 6)))
-
-(use-package dired
- :hook (dired-mode . dired-omit-mode)
- :bind (:map dired-mode-map
- ( "." . dired-omit-mode))
- :custom
- (dired-omit-files (rx (seq bol ".")))
- (dired-use-ls-dired t)
- (insert-directory-program "/etc/profiles/per-user/fcuny/bin/ls")
- (dired-clean-up-buffers-too nil)
- (dired-dwim-target t)
- (dired-hide-details-hide-information-lines nil)
- (dired-hide-details-hide-symlink-targets nil)
- (dired-recursive-copies 'always)
- (dired-recursive-deletes 'always)
- (dired-no-confirm
- '(byte-compile chgrp chmod chown copy hardlink symlink touch)))
-
-(defun my/rename-this-buffer-and-file ()
- "Renames current buffer and file it is visiting."
- (interactive)
- (let ((name (buffer-name))
- (filename (buffer-file-name))
- (read-file-name-function 'read-file-name-default))
- (if (not (and filename (file-exists-p filename)))
- (error "Buffer '%s' is not visiting a file!" name)
- (let ((new-name (read-file-name "New name: " filename)))
- (cond ((get-buffer new-name)
- (error "A buffer named '%s' already exists!" new-name))
- (t
- (rename-file filename new-name 1)
- (rename-buffer new-name)
- (set-visited-file-name new-name)
- (set-buffer-modified-p nil)
- (message "File '%s' successfully renamed to '%s'" name (file-name-nondirectory new-name))))))))
-
-;; Don't say anything on mode-line mouseover.
-(setq mode-line-default-help-echo nil)
-
-;; Keep cursors and highlights in current window only.
-(setq cursor-in-non-selected-windows nil)
-
-;; Don't highlight inactive windows.
-(setq highlight-nonselected-windows nil)
-
-(use-package fringe
- :config
- ;; no fringe on the right side
- (fringe-mode '(8 . 0)))
-
-;; Disable bidirectional text support for slight performance bonus.
-(setq bidi-display-reordering nil)
-
-;; show column number in the mode line
-(setq column-number-mode t)
+(global-set-key (kbd "C-x C-b") 'ibuffer)
+(global-set-key (kbd "C-c y") 'git-link)
+(global-set-key (kbd "C-c C-r") 'eval-region)
+(global-set-key (kbd "C-c C-d") 'eval-defun)
+(global-set-key (kbd "C-c C-b") 'eval-buffer)
+(global-set-key (kbd "C-c ! b") 'flymake-show-project-diagnostics)
+(global-set-key (kbd "C-c ! n") 'flymake-goto-next-error)
+(global-set-key (kbd "C-c ! p") 'flymake-goto-prev-error)
+
+;; load the PATH properly on macOS
+;; FIXME (require 'exec-path-from-shell)
+(require 'exec-path-from-shell)
+(exec-path-from-shell-initialize)
+
+;; TODO dired
(require 'time)
-
+;;; time related configurations
(setq display-time-24hr-format t
display-time-interval 60
display-time-mode t
@@ -159,307 +88,173 @@
;; UTC => 02:42 +0000 Wednesday 20 April
;; Berkeley => 19:42 -0700 Tuesday 19 April
(setq zoneinfo-style-world-list '(("UTC" "UTC")
- ("America/Los_Angeles" "Berkeley")
- ("America/Denver" "Mountain Time")
- ("America/Chicago" "Central Time")
- ("America/New_York" "New York")
- ("Europe/London" "London")
- ("Europe/Paris" "Paris")))
-
-(use-package ef-themes
- :custom
- (ef-themes-region '(intense no-extend neutral))
- (ef-themes-disable-other-themes t)
- (ef-themes-to-toggle '(ef-melissa-light ef-maris-light))
- :init
- (ef-themes-select 'ef-maris-light))
-
-(use-package magit
- :bind ("C-x g" . magit-status)
- :custom
- (magit-diff-refine-hunk t)
- (magit-repository-directories
- '(("~/workspace" . 1)))
- (magit-repolist-column-flag-alist
- '((magit-untracked-files . "N")
- (magit-unstaged-files . "U")
- (magit-staged-files . "S")))
- (magit-repolist-columns
- '(("Name" 25 magit-repolist-column-ident nil)
- ("" 3 magit-repolist-column-flag)
- ("Version" 25 magit-repolist-column-version
- ((:sort magit-repolist-version<)))
- ("B<U" 3 magit-repolist-column-unpulled-from-upstream
- ((:right-align t)
- (:sort <)))
- ("B>U" 3 magit-repolist-column-unpushed-to-upstream
- ((:right-align t)
- (:sort <)))
- ("Path" 99 magit-repolist-column-path nil)))
- (magit-clone-default-directory "~/workspace/")
- :config
- ;; show ANSI colors in the process buffer, so it's easier to read what's going on
- ;; for some reasons if it's in the `:custom' section it does not get set
- (setq magit-process-finish-apply-ansi-colors t))
-
-(use-package git-link
- :defines git-link-remote-alist
- :bind ("C-c Y" . git-link)
- :commands (git-link git-link-commit git-link-homepage)
- :custom
- (git-link-open-in-browser t)
- :config
- ;; sets up roblox git enterprise as a git-link handler
+ ("America/Los_Angeles" "Berkeley")
+ ("America/Denver" "Mountain Time")
+ ("America/Chicago" "Central Time")
+ ("America/New_York" "New York")
+ ("Europe/London" "London")
+ ("Europe/Paris" "Paris")))
+
+;;; magit
+(require 'magit)
+(setq magit-diff-refine-hunk t
+ magit-repository-directories '(("~/workspace" . 1))
+ magit-clone-default-directory "~/workspace/"
+ magit-repolist-columns '(("Name" 25 magit-repolist-column-ident nil)
+ ("" 3 magit-repolist-column-flag)
+ ("Version" 25 magit-repolist-column-version
+ ((:sort magit-repolist-version<)))
+ ("B<U" 3 magit-repolist-column-unpulled-from-upstream
+ ((:right-align t)
+ (:sort <)))
+ ("B>U" 3 magit-repolist-column-unpushed-to-upstream
+ ((:right-align t)
+ (:sort <)))
+ ("Path" 99 magit-repolist-column-path nil))
+ magit-repolist-column-flag-alist '((magit-untracked-files . "N")
+ (magit-unstaged-files . "U")
+ (magit-staged-files . "S")))
+
+;; show ANSI colors in the process buffer, so it's easier to read what's going on
+;; for some reasons if it's in the `:custom' section it does not get set
+(setq magit-process-apply-ansi-colors t)
+
+;;; git-link
+(require 'git-link)
+(setq git-link-open-in-browser t)
+
+;; FIXME sets up roblox git enterprise as a git-link handler
+(with-eval-after-load 'git-link
(add-to-list 'git-link-remote-alist '("github\\.rblx\\.com" git-link-github))
(add-to-list 'git-link-commit-remote-alist '("github\\.rblx\\.com" git-link-commit-github)))
-(use-package rg
- :custom
- (rg-group-result t)
- (rg-show-columns t)
- (rg-align-line-number-field-length 3)
- (rg-align-column-number-field-length 3)
- (rg-align-line-column-separator "#")
- (rg-align-position-content-separator "|")
- (rg-hide-command nil)
- (rg-align-position-numbers t)
- (rg-command-line-flags '("--follow")))
-
-(use-package project
- :config
- (setq project-mode-line t
- project-switch-commands
- '((project-find-file "Find file" f)
- (project-dired "Dired" d)
- (project-eshell "Eshell" e)
- (magit-project-status "Magit" ?m))))
-
-;; `elec-pair' is a built-in minor-mode that enables auto-pairing of parens (or
-;; similar delimiters).
-(use-package elec-pair
- :hook (prog-mode . electric-pair-mode))
-
-(use-package compile
- :hook (compilation-filter . ansi-color-compilation-filter)
- :custom
- (compilation-always-kill t)
- (compilation-context-lines 10)
- (compilation-disable-input t)
- (compilation-scroll-output 'first-error)
- (compilation-scroll-output t)
- (compilation-skip-threshold 2)
- ;; Save all buffers on M-x `compile'
- (compilation-ask-about-save nil))
-
-(use-package eldoc
- :diminish
- :hook ((emacs-lisp-mode) . eldoc-mode)
- :custom
- (eldoc-idle-delay 1)
- (eldoc-documentation-strategy #'eldoc-documentation-default)
- ;; Don't resize the echo area if the documentation is longer. This is very
- ;; distracting when combined with Eglot's highlight functionality.
- (eldoc-echo-area-use-multiline-p nil))
-
-(use-package tree-sitter
- :config
- (global-tree-sitter-mode))
-
-(use-package tree-sitter-langs
- :after tree-sitter)
-
-(use-package direnv
- :custom
- (direnv-always-show-summary nil)
- :config
- (direnv-mode))
-
-(use-package emacs-lisp-mode
- :bind (:map emacs-lisp-mode-map
- ("C-c C-r" . eval-region)
- ("C-c C-d" . eval-defun)
- ("C-c C-b" . eval-buffer))
- :hook ((emacs-lisp-mode . flymake-mode)))
-
-(use-package eglot
- :after yasnippet
- :bind (:map eglot-mode-map
- ("C-c l a" . eglot-code-actions)
- ("C-c l r" . eglot-rename)
- ("C-c l f" . eglot-format-buffer))
- :hook ((go-mode . eglot-ensure)
- (python-mode . eglot-ensure)
- (nix-mode . eglot-ensure))
- :custom
- (eglot-send-changes-idle-time 0.1)
- :config
- (setq eglot-autoshutdown t
- ;; Disable logging of events.
- eglot-events-buffer-size 0)
- (setq-default eglot-workspace-configuration
- '(:pylsp (:plugins (:ruff (:enabled t)))
- :nil (:formatting (:command ["nixfmt"]))
- :gopls (:usePlaceholders t
- :staticcheck t
- :completeUnimported t
- :matcher "CaseSensitive")))
-
- ;; uses https://github.com/nix-community/nixd for the LSP server instead of rnix
+;;; rg
+(require 'rg)
+(setq rg-group-result t
+ rg-show-columns t
+ rg-align-line-number-field-length 3
+ rg-align-column-number-field-length 3
+ rg-align-line-column-separator "#"
+ rg-align-position-content-separator "|"
+ rg-hide-command nil
+ rg-align-position-numbers t
+ rg-command-line-flags '("--follow"))
+
+;;; project
+(require 'project)
+(setq project-mode-line t
+ project-switch-commands '((project-find-file "Find file" f)
+ (project-dired "Dired" d)
+ (project-eshell "Eshell" e)
+ (magit-project-status "Magit" ?m)))
+
+;;; prog mode related
+(add-hook 'prog-mode-hook 'electric-pair-mode)
+(add-hook 'prog-mode-hook 'flymake-mode)
+
+;; compile mode
+(add-hook 'compilation-filter-hook 'ansi-color-compilation-filter)
+(setq compilation-always-kill t
+ compilation-context-lines 10
+ compilation-disable-input t
+ compilation-scroll-output 'first-error
+ compilation-scroll-output t
+ compilation-skip-threshold 2
+ compilation-ask-about-save nil)
+
+;; elisp
+(add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
+(add-hook 'emacs-lisp-mode-hook 'flymake-mode)
+
+(setq eldoc-idle-delay 1
+ eldoc-documentation-strategy #'eldoc-documentation-default
+ eldoc-echo-area-use-multiline-p nil)
+
+;; direnv
+(require 'direnv)
+(direnv-mode t)
+(setq direnv-always-show-summary nil)
+
+;; eglot
+(require 'eglot)
+
+(add-hook 'python-mode-hook 'eglot-ensure)
+(add-hook 'go-mode-hook 'eglot-ensure)
+(add-hook 'nix-mode-hook 'eglot-ensure)
+
+(setq eglot-send-changes-idle-time 0.1
+ eglot-autoshutdown t)
+
+(setq-default eglot-workspace-configuration
+ '(:pylsp (:plugins (:ruff (:enabled t)))
+ :nil (:formatting (:command ["nixfmt"]))
+ :gopls (:usePlaceholders t
+ :staticcheck t
+ :completeUnimported t
+ :matcher "CaseSensitive")))
+
+;; uses https://github.com/nix-community/nixd for the LSP server instead of rnix
+(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs '(nix-mode . ("nil"))))
-;;; go related configuration
-(use-package go-mode
- :hook ((go-mode . tree-sitter-hl-mode)
- (go-mode . (lambda () (setq tab-width 4)))
- (go-mode . (lambda () (add-hook 'before-save-hook 'eglot-format-buffer nil t))))
- :bind (:map go-mode-map
- ("C-c C-c" . compile)))
-
-(use-package gotest
- :after go-mode
- :custom
- (go-test-verbose t))
-
-;;; nix related configuration
-(use-package nix-mode
- :hook ((nix-mode . (lambda () (add-hook 'before-save-hook 'eglot-format-buffer nil t))))
- :custom
- (nix-indent-function 'nix-indent-line))
-
-;;; python related configuration
-(use-package python-mode
- :hook ((python-mode . tree-sitter-hl-mode)))
-
-(use-package ruby-mode)
-
-;;; flymake related configuration
-(use-package flymake
- :bind (:prefix "C-c !"
- :prefix-map flymake-prefix-map
- ("l" . consult-flymake)
- ("b" . flymake-show-project-diagnostics)
- ("n" . flymake-goto-next-error)
- ("p" . flymake-goto-prev-error))
- :hook
- (prog-mode . flymake-mode)
- :custom
- (flymake-start-on-save-buffer t)
- (flymake-fringe-indicator-position 'left-fringe)
- (flymake-suppress-zero-counters t)
- (flymake-proc-compilation-prevents-syntax-check t)
- (flymake-no-changes-timeout 9999)
- (elisp-flymake-byte-compile-load-path load-path))
-
-;;; JSON related modules
-(use-package json-mode
- :mode "\\.json\\'")
-
-(use-package json-reformat
- :after json-mode)
-
-(use-package jq-mode
- :mode "\\.jq\\'")
-
-;;; hashicorp related modules
-(use-package terraform-mode
- :mode "\.tf\\'")
-
-(use-package hcl-mode
- :mode "\.nomad\\'")
-
-;;; TOML related modules
-(use-package toml-mode)
-
-;;; YAML related modules
-(use-package yaml-mode)
-
-;;; docker related modules
-(use-package docker
- :bind ("C-c d" . docker)
- :diminish
- :init
- (use-package docker-image :commands docker-images)
- (use-package docker-volume :commands docker-volumes)
- (use-package docker-network :commands docker-containers)
- (use-package docker-compose :commands docker-compose)
-
- (use-package docker-container
- :commands docker-containers
- :custom
- (docker-containers-shell-file-name "/bin/bash")
- (docker-containers-show-all nil)))
-
-(use-package docker-compose-mode
- :mode "docker-compose.*\.yml\\'")
-
-(use-package dockerfile-mode
- :mode "Dockerfile[a-zA-Z.-]*\\'")
-
-(use-package protobuf-mode
- :mode "\\.proto\\'")
-
-;;; css related configuration
-(use-package css-mode
- :custom
- (css-indent-offset 2)
- (cssm-indent-level 1))
-
-(use-package consult
- :commands (consult-ripgrep consult-buffer consult-imenu)
- :bind (("C-c m" . consult-mode-command)
- ("C-x b" . consult-buffer)
- ("C-x r b" . consult-bookmark)
- ("C-x p b" . consult-project-buffer)
- ("C-c i" . consult-imenu)
- ("M-g e" . consult-compile-error)
- ("M-g M-g" . consult-goto-line)
- ("M-g m" . consult-mark)
- ("M-g k" . consult-global-mark)))
-
-(use-package corfu
- :custom
- (corfu-auto t)
- :bind ("M-/" . completion-at-point)
- :hook ((after-init . global-corfu-mode)
- (global-corfu-mode . corfu-popupinfo-mode)))
-
-(use-package cape
- :ensure t)
-
-(use-package marginalia
- :ensure t
- :hook (after-init . marginalia-mode))
-
-(use-package orderless
- :demand t
- :custom
- (completion-styles '(orderless basic))
- (completion-category-defaults nil))
-
-(use-package vertico
- :hook ((after-init . vertico-mode)))
-
-(use-package eshell
- :commands (eshell eshell-command)
- :bind (("C-r" . consult-history))
- :custom
- (eshell-hist-ignoredups t)
- (eshell-history-size 50000)
- (eshell-ls-dired-initial-args '("-h"))
- (eshell-ls-initial-args "-h")
- (eshell-ls-exclude-regexp "~\\'")
- (eshell-save-history-on-exit t)
- (eshell-stringify-t nil)
- (eshell-term-name "ansi"))
-
-(use-package yasnippet
- :hook (after-init . yas-global-mode))
-
-;; Yasnippet Completion At Point Function
-(use-package yasnippet-capf
- :init (add-to-list 'completion-at-point-functions #'yasnippet-capf))
-
-(report-time-since-load)
+;; flymake
+(require 'flymake)
+
+(setq flymake-start-on-save-buffer t
+ flymake-fringe-indicator-position 'left-fringe
+ flymake-suppress-zero-counters t
+ flymake-no-changes-timeout 9999
+ elisp-flymake-byte-compile-load-path load-path)
+
+;;; completion
+(require 'consult)
+(require 'consult-imenu)
+(require 'consult-compile)
+(require 'corfu)
+(require 'corfu-popupinfo)
+(require 'cape)
+(require 'marginalia)
+(require 'orderless)
+(require 'vertico)
+
+(global-corfu-mode t)
+(corfu-popupinfo-mode t)
+(marginalia-mode t)
+(vertico-mode t)
+
+(setq corfu-auto t)
+(setq completion-styles '(orderless basic)
+ completion-category-defaults nil)
+
+(bind-key "C-x b" #'consult-buffer)
+(bind-key "C-x r b" #'consult-bookmark)
+(bind-key "C-x p b" #'consult-project-buffer)
+(bind-key "C-c i" #'consult-imenu)
+(bind-key "M-g e" #'consult-compile-error)
+(bind-key "M-g M-g" #'consult-goto-line)
+(bind-key "M-g m" #'consult-mark)
+(bind-key "M-g k" #'consult-global-mark)
+
+(add-hook 'after-init-mode 'global-corfu-mode)
+(add-hook 'after-init-mode 'vertico-mode)
+
+;;; theming
+(require-theme 'modus-themes)
+(setq modus-themes-italic-constructs t
+ modus-themes-bold-constructs t
+ modus-themes-mixed-fonts t
+ modus-themes-variable-pitch-ui nil
+ modus-themes-prompts '(italic bold)
+ modus-themes-completions
+ '((matches . (extrabold))
+ (selection . (semibold italic text-also))))
+
+(load-theme 'modus-operandi-tinted :no-confirm)
+
+;;; server
+(require 'server)
+(unless (server-running-p)
+ (server-start))
;;; early-init.el ends here
;; byte-compile-warnings: (not docstrings lexical noruntime)
diff --git a/nix/users/fcuny/emacs.nix b/nix/users/fcuny/emacs.nix
index f7f83d6..9b7bbe8 100644
--- a/nix/users/fcuny/emacs.nix
+++ b/nix/users/fcuny/emacs.nix
@@ -1,50 +1,43 @@
{ pkgs, ... }:
let
- myEmacs = pkgs.emacsWithPackagesFromUsePackage {
- # TODO: https://github.com/NixOS/nixpkgs/issues/395169
- package = pkgs.emacs.override { withNativeCompilation = false; };
- config = ./configs/emacs/init.el;
- defaultInitFile = true;
- extraEmacsPackages =
- epkgs: with epkgs; [
- # completion
- cape
- consult
- corfu
- marginalia
- orderless
- vertico
+ packages =
+ epkgs: with epkgs; [
+ # completion
+ cape
+ consult
+ corfu
+ marginalia
+ orderless
+ vertico
- # development
- git-link
- direnv
- docker
- docker-compose-mode
- dockerfile-mode
- go-mode
- gotest
- hcl-mode
- jq-mode
- json-mode
- json-reformat
- magit
- nix-mode
- protobuf-mode
- terraform-mode
- toml-mode
- tree-sitter
- tree-sitter-langs
- treesit-grammars.with-all-grammars
- yaml-mode
+ # development
+ git-link
+ direnv
+ docker
+ docker-compose-mode
+ dockerfile-mode
+ go-mode
+ gotest
+ hcl-mode
+ jq-mode
+ json-mode
+ json-reformat
+ magit
+ nix-mode
+ protobuf-mode
+ terraform-mode
+ toml-mode
+ tree-sitter
+ tree-sitter-langs
+ treesit-grammars.with-all-grammars
+ yaml-mode
- # misc
- ef-themes
- exec-path-from-shell
- rg
- yasnippet
- yasnippet-capf
- ];
- };
+ # misc
+ exec-path-from-shell
+ rg
+ yasnippet
+ yasnippet-capf
+ ];
in
{
home.file.".config/emacs/early-init.el".source = ./configs/emacs/early-init.el;
@@ -52,7 +45,8 @@ in
programs.emacs = {
enable = true;
- package = myEmacs;
+ extraPackages = packages;
+ package = pkgs.emacs.override { withNativeCompilation = false; };
};
home.packages = with pkgs; [