{ ... }: { flake.homeModules.emacs = { pkgs, ... }: { programs.emacs = { enable = true; package = pkgs.emacs-pgtk; extraConfig = '' ;; -*- lexical-binding: t; -*- (setq make-backup-files nil) (add-to-list 'default-frame-alist '(font . "JetBrainsMono Nerd Font Mono-14")) (require 'package) (add-to-list 'package-archives '("melpa-snapshots" . "https://snapshots.melpa.org/packages/") t) ;; add packages (use-package org-view-mode :ensure t) (use-package envrc :ensure t) (use-package nix-mode :ensure t) (use-package eldoc-box :ensure t :hook (eglot-managed-mode . eldoc-box-hover-mode) ) (use-package elisp-autofmt :ensure t :commands (elisp-autofmt-buffer elisp-autofmt-mode) :hook (emacs-lisp-mode . elisp-autofmt-mode) :config) (use-package portage-modes :ensure t) (use-package corfu :ensure t :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 :ensure t :bind ("C-c p" . cape-prefix-map) ;; Alternative key: M-, 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) ''; }; }; }