108 lines
3.4 KiB
Nix
108 lines
3.4 KiB
Nix
{ ... }: {
|
|
|
|
flake.homeModules.emacs = { pkgs, ... }: {
|
|
programs.emacs = {
|
|
enable = true;
|
|
package = pkgs.emacs-pgtk;
|
|
extraPackages =
|
|
epkgs: with epkgs; [
|
|
eldoc-box
|
|
elisp-autofmt
|
|
corfu
|
|
cape
|
|
nix-mode
|
|
envrc
|
|
];
|
|
extraConfig = ''
|
|
;; -*- lexical-binding: t; -*-
|
|
(setq make-backup-files nil)
|
|
(require 'package)
|
|
(add-to-list 'package-archives
|
|
'("melpa-snapshots"
|
|
.
|
|
"https://snapshots.melpa.org/packages/")
|
|
t)
|
|
;; add packages
|
|
(use-package org-view-mode)
|
|
(use-package envrc)
|
|
|
|
(use-package nix-mode)
|
|
(use-package
|
|
eldoc-box
|
|
:hook (eglot-managed-mode . eldoc-box-hover-mode)
|
|
)
|
|
(use-package
|
|
elisp-autofmt
|
|
:commands (elisp-autofmt-buffer elisp-autofmt-mode)
|
|
:hook (emacs-lisp-mode . elisp-autofmt-mode)
|
|
:config)
|
|
(use-package portage-modes :ensure t)
|
|
(use-package
|
|
corfu
|
|
:init
|
|
(setq
|
|
corfu-auto t
|
|
corfu-auto-prefix 1
|
|
corfu-auto-delay 0.2)
|
|
(global-corfu-mode))
|
|
|
|
(setq tab-always-indent 'complete)
|
|
(use-package
|
|
cape
|
|
:bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-<tab>, M-p, M-+
|
|
:init (add-hook 'completion-at-point-functions #'cape-file))
|
|
(setq corfu-auto-prefix 2)
|
|
(use-package qml-mode :ensure t)
|
|
(use-package lua-mode :ensure t)
|
|
(use-package elcord :ensure t :init (elcord-mode))
|
|
|
|
(add-to-list
|
|
'display-buffer-alist
|
|
'("\\*compilation\\*" (display-buffer-reuse-window
|
|
display-buffer-below-selected)
|
|
(window-height . 0.3)))
|
|
|
|
|
|
;; remove useless shit and set default opts
|
|
(setq org-hide-emphasis-markers t)
|
|
(setq ring-bell-function 'ignore)
|
|
(menu-bar-mode -1)
|
|
(tool-bar-mode -1)
|
|
(setq display-line-numbers-type 'relative)
|
|
(global-display-line-numbers-mode +1)
|
|
(global-tab-line-mode 1)
|
|
(scroll-bar-mode -1)
|
|
(setq inhibit-splash-screen 1)
|
|
(setq custom-file "~/.emacs.d/custom.el")
|
|
(load custom-file 'noerror)
|
|
|
|
|
|
;; lsp shit
|
|
(add-hook 'nix-mode-hook #'eglot-ensure)
|
|
(add-hook 'c-mode-hook #'eglot-ensure)
|
|
(add-hook 'qml-mode-hook #'eglot-ensure)
|
|
(with-eval-after-load 'eglot
|
|
(add-to-list 'eglot-server-programs '(nix-mode . ("nixd")))
|
|
(add-to-list 'eglot-server-programs '(qml-mode . ("qmlls"))))
|
|
|
|
;; keybindings
|
|
(keymap-global-set "C-c f" 'eglot-format)
|
|
(keymap-global-set "C-c t" 'term)
|
|
(keymap-global-set "C-c c" 'compile)
|
|
(keymap-global-set "C-c k b" 'kill-current-buffer)
|
|
(keymap-global-set "C-c k w" 'kill-buffer-and-window)
|
|
(keymap-global-set "C-c v" 'org-view-mode)
|
|
(windmove-default-keybindings)
|
|
;; replace dashes with bullets in org mode
|
|
(font-lock-add-keywords 'org-mode
|
|
'(("^ +\\([-*]\\) "
|
|
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
|
|
|
|
(setq org-view-prettify-credentials nil)
|
|
(setq org-view-hide-keywords nil)
|
|
(envrc-global-mode)
|
|
|
|
'';
|
|
};
|
|
};
|
|
}
|