diff --git a/modules/home/caem/development/emacs/default.nix b/modules/home/caem/development/emacs/default.nix index 251fc83..dbc80b9 100644 --- a/modules/home/caem/development/emacs/default.nix +++ b/modules/home/caem/development/emacs/default.nix @@ -1,12 +1,12 @@ { pkgs, config, ... }: let - # Has to be >= 29 due to treesitter + # Has to be >= 29.1 due to treesitter emacsPkg = "emacs30"; in { services.emacs = { enable = true; - package = pkgs."${emacsPkg}"; + package = pkgs."${emacsPkg}"; defaultEditor = true; }; diff --git a/modules/home/caem/development/emacs/emacs.d/annoyances.el b/modules/home/caem/development/emacs/emacs.d/annoyances.el deleted file mode 100644 index 28d2b3c..0000000 --- a/modules/home/caem/development/emacs/emacs.d/annoyances.el +++ /dev/null @@ -1,9 +0,0 @@ -(setq custom-file "/dev/null") - -(let ((backup_dir (concat (or (getenv "XDG_CACHE_HOME") "~/.cache") "/emacs_backups"))) - (make-directory backup_dir t) - (setq backup-directory-alist '(("." . backup_dir)) - backup-by-copying t)) - -(setq inhibit-startup-message t) -(setq auto-save-default nil) diff --git a/modules/home/caem/development/emacs/emacs.d/appearance.el b/modules/home/caem/development/emacs/emacs.d/appearance.el deleted file mode 100644 index 699db08..0000000 --- a/modules/home/caem/development/emacs/emacs.d/appearance.el +++ /dev/null @@ -1,24 +0,0 @@ -(tool-bar-mode 0) -(menu-bar-mode 0) -(scroll-bar-mode 0) - -(setq display-line-numbers-type 'relative) -(global-display-line-numbers-mode t) -(global-hl-line-mode t) - -(set-frame-parameter nil 'alpha-background 90) -(add-to-list 'default-frame-alist - '(font . "Go Mono Nerd Font-12")) - -(use-package darktooth-theme - :ensure t - :config - (load-theme 'darktooth-dark t) - (set-face-background 'hl-line "#262626")) ;; darktooth-background-0 - -(use-package tree-sitter :ensure t) -(use-package tree-sitter-langs :ensure t) -(setq treesit-extra-load-path - (file-expand-wildcards (concat package-user-dir "/tree-sitter-langs*/bin"))) - -(add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode) diff --git a/modules/home/caem/development/emacs/emacs.d/completions.el b/modules/home/caem/development/emacs/emacs.d/completions.el deleted file mode 100644 index 03f5eb5..0000000 --- a/modules/home/caem/development/emacs/emacs.d/completions.el +++ /dev/null @@ -1,8 +0,0 @@ -(ido-mode 1) -(ido-everywhere 1) - -(use-package smex - :ensure t - :bind (("M-x" . smex) - ("M-X" . smex-major-mode-commands)) - :config (smex-initialize)) diff --git a/modules/home/caem/development/emacs/emacs.d/core/appearance.el b/modules/home/caem/development/emacs/emacs.d/core/appearance.el new file mode 100644 index 0000000..437011f --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/appearance.el @@ -0,0 +1,27 @@ +(tool-bar-mode 0) +(menu-bar-mode 0) +(scroll-bar-mode 0) + +(setq display-line-numbers-type 'relative) +(global-display-line-numbers-mode t) +(global-hl-line-mode t) + +(add-to-list 'default-frame-alist + '(font . "Go Mono Nerd Font-12")) + +(let ((opacity 95)) + (set-frame-parameter nil 'alpha-background opacity) + (add-to-list 'default-frame-alist `(alpha-background . ,opacity))) + +(setq compilation-scroll-output t) + +(use-package rainbow-delimiters + :ensure t + :hook + ((prog-mode . rainbow-delimiters-mode))) + +(use-package darktooth-theme + :ensure t + :config + (load-theme 'darktooth-dark t) + (set-face-background 'hl-line "#262626")) diff --git a/modules/home/caem/development/emacs/emacs.d/core/ido.el b/modules/home/caem/development/emacs/emacs.d/core/ido.el new file mode 100644 index 0000000..ad426c7 --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/ido.el @@ -0,0 +1,17 @@ +(use-package smex + :ensure t + :bind + (("M-x" . smex) + ("M-X" . smex-major-mode-commands)) + :config (smex-initialize)) + +(use-package ido-completing-read+ + :ensure t + :config (ido-ubiquitous-mode 1)) + +(use-package amx + :ensure t + :config (amx-mode 1)) + +(ido-mode 1) +(ido-everywhere 1) diff --git a/modules/home/caem/development/emacs/emacs.d/core/init.el b/modules/home/caem/development/emacs/emacs.d/core/init.el new file mode 100644 index 0000000..4be4a6d --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/init.el @@ -0,0 +1,5 @@ +(rei/load "repositories.el") +(rei/load "litter.el") +(rei/load "appearance.el") +(rei/load "tree-sitter.el") +(rei/load "ido.el") diff --git a/modules/home/caem/development/emacs/emacs.d/core/litter.el b/modules/home/caem/development/emacs/emacs.d/core/litter.el new file mode 100644 index 0000000..92b660a --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/litter.el @@ -0,0 +1,10 @@ +(setq custom-file "/dev/null" + inhibit-splash-screen t + backup-by-copying t) + +(use-package no-littering + :ensure t + :init + (setq no-littering-etc-directory (file-name-concat (xdg-data-home) "emacs") + no-littering-var-directory (file-name-concat (xdg-data-home) "emacs")) + (no-littering-theme-backups)) diff --git a/modules/home/caem/development/emacs/emacs.d/core/repositories.el b/modules/home/caem/development/emacs/emacs.d/core/repositories.el new file mode 100644 index 0000000..cb9566b --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/repositories.el @@ -0,0 +1,8 @@ +;; Set the elpa directory ahead of loading the no-littering package, as it would +;; otherwise cause it to be installed in the configuration directory as no-littering +;; has to be first insalled from melpa before being able to be called. +(setq package-user-dir (file-name-concat (xdg-data-home) "emacs" "elpa")) + +(require 'package) +(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) +(package-initialize) diff --git a/modules/home/caem/development/emacs/emacs.d/core/tree-sitter.el b/modules/home/caem/development/emacs/emacs.d/core/tree-sitter.el new file mode 100644 index 0000000..c6f7ccc --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/core/tree-sitter.el @@ -0,0 +1,11 @@ +(require 'treesit) + +(setq treesit-font-lock-level 4) + +(use-package treesit-auto + :ensure t + :custom + (treesit-auto-install 'prompt) + :config + (treesit-auto-add-to-auto-mode-alist 'all) + (global-treesit-auto-mode)) diff --git a/modules/home/caem/development/emacs/emacs.d/formatting.el b/modules/home/caem/development/emacs/emacs.d/formatting.el deleted file mode 100644 index cb7022f..0000000 --- a/modules/home/caem/development/emacs/emacs.d/formatting.el +++ /dev/null @@ -1,16 +0,0 @@ -(setq-default indent-tabs-mode nil) -(setq-default tab-width 4) -(setq indent-line-function 'insert-tab) -(setq-default show-trailing-whitespace t) - -(use-package indent-bars - :ensure t - :hook ((prog-mode . indent-bars-mode) - (text-mode . indent-bars-mode)) - :custom - (indent-bars-display-on-blank-lines t) - (indent-bars-pattern " . . . ") - (indent-bars-color '("#7C6F64" :blend 0.2)) - (indent-bars-width-frac 0.15) - (indent-bars-color-by-depth nil) - (indent-bars-highlight-current-depth '(:color "#DD6F48" :pattern "." :blend 0.4))) diff --git a/modules/home/caem/development/emacs/emacs.d/init.el b/modules/home/caem/development/emacs/emacs.d/init.el index 9d5f820..6c6f029 100644 --- a/modules/home/caem/development/emacs/emacs.d/init.el +++ b/modules/home/caem/development/emacs/emacs.d/init.el @@ -1,29 +1,8 @@ -(setq conf-home (concat (or (getenv "XDG_CONFIG_HOME") "~/.config") "/emacs")) +(require 'xdg) +(setq user-emacs-directory (file-name-concat (xdg-config-home) "emacs")) +(add-to-list 'load-path user-emacs-directory) -;; Set up paths so that emacs never touches ~/.config/emacs -(let ((data-home (concat (or (getenv "XDG_DATA_HOME") "~/.local/share") "/emacs"))) - (setq user-emacs-directory data-home - custom-file (expand-file-name "custom.el" data-home) - url-history-file (expand-file-name "url/history" data-home) - package-user-dir (expand-file-name "elpa" data-home) - boomark-default-file (expand-file-name "bookmarks" data-home) - recentf-save-file (expand-file-name "recentf" data-home) - tramp-persistent-file-name (expand-file-name "tramp" data-home) - auto-save-list-file-prefix (expand-file-name "auto-save-list/.saves-" data-home) - abbrev-file-name (expand-file-name "abbrev.el" data-home) - savehist-file (expand-file-name "savehist" data-home) - server-auth-dir (expand-file-name "server" data-home) - package-quickstart-file (expand-file-name "package-quickstart.elc" data-home)) - (startup-redirect-eln-cache (expand-file-name "eln-cache" data-home))) +(require 'rei) -(package-initialize) - -(require 'package) -(add-to-list 'package-archives - '("melpa" . "https://melpa.org/packages/") t) - -(load (expand-file-name "./appearance.el" conf-home)) -(load (expand-file-name "./annoyances.el" conf-home)) -(load (expand-file-name "./completions.el" conf-home)) -(load (expand-file-name "./formatting.el" conf-home)) -(mapc 'load (file-expand-wildcards (expand-file-name "./languages/*.el" conf-home))) +(rei/load "core") +(rei/load "modes") diff --git a/modules/home/caem/development/emacs/emacs.d/languages/c.el b/modules/home/caem/development/emacs/emacs.d/languages/c.el deleted file mode 100644 index 5fe106d..0000000 --- a/modules/home/caem/development/emacs/emacs.d/languages/c.el +++ /dev/null @@ -1,6 +0,0 @@ -(setq c-basic-offset 4) - -;; https://files.catbox.moe/miu12k.jpg -(setq c-default-style '((other . "stroustrup") - (awk-mode . "awk") - (java-mode . "java"))) diff --git a/modules/home/caem/development/emacs/emacs.d/languages/nix.el b/modules/home/caem/development/emacs/emacs.d/languages/nix.el deleted file mode 100644 index 13528c6..0000000 --- a/modules/home/caem/development/emacs/emacs.d/languages/nix.el +++ /dev/null @@ -1,11 +0,0 @@ -(use-package nix-mode - :ensure t - :mode "\\.nix\\'") - -(use-package pretty-sha-path - :ensure t - :config (global-pretty-sha-path-mode 1)) - -(add-hook 'nix-mode-hook - (lambda () - (setq tab-width 2))) diff --git a/modules/home/caem/development/emacs/emacs.d/languages/rust.el b/modules/home/caem/development/emacs/emacs.d/languages/rust.el deleted file mode 100644 index d0ea6cc..0000000 --- a/modules/home/caem/development/emacs/emacs.d/languages/rust.el +++ /dev/null @@ -1,4 +0,0 @@ -(use-package rust-mode - :ensure t - :init - (setq rust-mode-treesitter-derive t)) diff --git a/modules/home/caem/development/emacs/emacs.d/languages/systemd.el b/modules/home/caem/development/emacs/emacs.d/languages/systemd.el deleted file mode 100644 index d95cbc5..0000000 --- a/modules/home/caem/development/emacs/emacs.d/languages/systemd.el +++ /dev/null @@ -1,2 +0,0 @@ -(use-package systemd - :ensure t) diff --git a/modules/home/caem/development/emacs/emacs.d/languages/yaml.el b/modules/home/caem/development/emacs/emacs.d/languages/yaml.el deleted file mode 100644 index 3646177..0000000 --- a/modules/home/caem/development/emacs/emacs.d/languages/yaml.el +++ /dev/null @@ -1,4 +0,0 @@ -(use-package yaml-mode - :ensure t - :mode ("\\.yaml\\'" . yaml-mode) - :mode ("\\.yml\\'" . yaml-mode)) diff --git a/modules/home/caem/development/emacs/emacs.d/modes/init.el b/modules/home/caem/development/emacs/emacs.d/modes/init.el new file mode 100644 index 0000000..9346429 --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/modes/init.el @@ -0,0 +1 @@ +(rei/load "nix-mode.el") diff --git a/modules/home/caem/development/emacs/emacs.d/modes/nix-mode.el b/modules/home/caem/development/emacs/emacs.d/modes/nix-mode.el new file mode 100644 index 0000000..eda5df7 --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/modes/nix-mode.el @@ -0,0 +1,5 @@ +(use-package nix-mode + :ensure t + :mode ("\\.nix\\'" "\\.nix.in\\'") + :init + (global-nix-prettify-mode 1)) diff --git a/modules/home/caem/development/emacs/emacs.d/rei.el b/modules/home/caem/development/emacs/emacs.d/rei.el new file mode 100644 index 0000000..65452f6 --- /dev/null +++ b/modules/home/caem/development/emacs/emacs.d/rei.el @@ -0,0 +1,13 @@ +(provide 'rei) + +(defun rei/load (path) + "Load a configuraion file relative to the current file. +When the specified path is a directory it will look for a init.el file to load." + (when load-file-name + (let ((fp (file-name-concat (file-name-directory load-file-name) path))) + (if (file-directory-p fp) + (let ((fdp (file-name-concat fp "init.el"))) + (if (file-exists-p fdp) + (load fdp) + (error "Cannot load %s directory as it's missing an init.el file." path))) + (load fp)))))