Add emacs configs

This commit is contained in:
JLP 2025-06-04 10:37:01 -04:00
parent 42d0793f2e
commit a21c42eb27
Signed by: jleechpe
GPG key ID: 414E00D1FF7519DC
7 changed files with 2114 additions and 2 deletions

4
.gitattributes vendored
View file

@ -1,10 +1,10 @@
## Encrypted ## Encrypted
.wakatime.cfg filter=ageEncrypt diff=ageEncrypt .wakatime.cfg filter=ageEncrypt diff=ageEncrypt
**/.kube/config filter=ageEncrypt diff=ageEncrypt **/.kube/config filter=ageEncrypt diff=ageEncrypt
**/.tabby-client/agent/config.toml filter=ageEncrypt diff=ageEncrypt config.toml filter=ageEncrypt diff=ageEncrypt
gpg/.gnupg/private-keys-v1.d/* filter=ageEncrypt diff=ageEncrypt gpg/.gnupg/private-keys-v1.d/* filter=ageEncrypt diff=ageEncrypt
msmtp/.config/msmtp/config filter=ageEncrypt diff=ageEncrypt msmtp/.config/msmtp/config filter=ageEncrypt diff=ageEncrypt
**/emacs/config/config-mail.el filter=ageEncrypt diff=ageEncrypt emacs/.config/emacs/secure-config/* filter=ageEncrypt diff=ageEncrypt
## Hostname interpolation ## Hostname interpolation
emborg/.config/emborg/* filter=setHostname emborg/.config/emborg/* filter=setHostname

View file

@ -0,0 +1,4 @@
;;; config-upgrades.el --- Extra packages purely for dependencies -*- no-byte-compile: t; lexical-binding: t; -*-
;; * Provide
(provide 'config-upgrades)

View file

@ -0,0 +1,38 @@
;;; post-early-init.el --- DESCRIPTION -*- no-byte-compile: t; lexical-binding: t; -*-
;; * Custom Variables
;; ** Path Variables
;; Define the vars
(defgroup config-dirs
nil "My Configuration directories")
(defvar user-lisp-dir (expand-file-name "single-lisp" minimal-emacs-user-directory)
"Directory for standalone lisp files that are manually installed.")
(defvar user-config-dir (expand-file-name "config" minimal-emacs-user-directory)
"Directory for all configurations to go under.")
(defvar user-secure-config-dir (expand-file-name "secure-config" minimal-emacs-user-directory)
"Directory for all secure configurations to go under")
(defcustom user-repo-dir (expand-file-name "sources" (getenv "HOME"))
"User directory that repos are stored in."
:type 'directory
:group 'config-dirs)
(defcustom user-org-dir (expand-file-name "org" (getenv "HOME"))
"User's default directory for org files"
:type 'directory
:group 'config-dirs)
;; Add them to load path for use
(add-to-list 'load-path user-config-dir)
(add-to-list 'load-path user-lisp-dir)
(add-to-list 'load-path user-secure-config-dir)
;; ** UI Variables
(defcustom emacs-font "Fira Code Nerd Font" "Font to use"
:type 'string
:group 'config-ui)
(defcustom emoji-font "Noto Color Emoji" "Font for emojis/icons"
:type 'string
:group 'config-ui)
(defcustom emacs-theme 'doom-spacegrey "Theme to use"
:type 'string
:group 'config-ui)

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,23 @@
;;; pre-early-init.el --- DESCRIPTION -*- no-byte-compile: t; lexical-binding: t; -*-
;; * Pre-Early-Init
;; ** Measure Startup time
(defun display-startup-time ()
"Display the startup time and number of garbage collections."
(message "Emacs init loaded in %.2f seconds (Full emacs-startup: %.2fs) with %d garbage collections."
(float-time (time-subtract after-init-time before-init-time))
(time-to-seconds (time-since before-init-time))
gcs-done))
(add-hook 'emacs-startup-hook #'display-startup-time 100)
;; ** Re-enable desired ui features
(setq minimal-emacs-ui-features '(menu-bar))
;; ** Move ELN Cache into a subdir
(when (and (fboundp 'startup-redirect-eln-cache)
(fboundp 'native-comp-available-p)
(native-comp-available-p))
(startup-redirect-eln-cache
(convert-standard-filename
(expand-file-name "var/eln-cache/" user-emacs-directory))))

View file

@ -0,0 +1,45 @@
;;; pre-init.el --- DESCRIPTION -*- no-byte-compile: t; lexical-binding: t; -*-
;;; post-early-init.el --- DESCRIPTION -*- no-byte-compile: t; lexical-binding: t; -*-
(setq elpaca-hide-initial-build t)
(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1 :inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let* ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
(elpaca elpaca-use-package
(elpaca-use-package-mode +1))
(setopt package-install-upgrade-built-in t)

View file

@ -0,0 +1,245 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyNENmYm1XalpPNlpNTXgr
UXpDRHhnWE9XRUw2Z2M0ZytlaDdCaFE5WkYwCjkvN09BUk5RNUNoNVdoMUJSSERp
MnlnblhqWXRIcXBWeVhnaCtCS2NwOGcKLS0tIDZ2MEdRcFI4cHBKQisrcWYzcFBn
M3lPcjVmemtjVlZmblN0SldWaHF1M2MKEiz+xE+nEgMnw0qTi2ImejpSG8ekgv/c
W0wKcs6pRF4efX8kJCSjXbxv91DqC8qnqiNRiMfKNoUHXZ1Zj3njUvMdz7e/15xd
1AUDcK4AeVNplisVCNp7ABjD+tiYw8A7J1lw8udSrV/EbomdF9mYJhX1+yOGg5x4
0IJMd3Qke1iQNQ1TVaNoF7jj48y/xBmOCOEFoA/odevfEYDx/8uQ3q1o8u5nZ44O
JOoHqqgXyO/n4V1qLmd6EIpQvnLG+U73pvNZNMKk0sRkgsqbFclq78Nm5kDrS1f6
J1XuNjhA9wB5mUCaatClGSToPll0Y770Vgr7kHd9x3u2UTZasaE07gfm89DTo19L
4rtqO8mASQKKWJb5Ut3eGx7KIoBwwOnRYjMBhu4WS5tTdgcFpwa+U7Xzibqu3IR0
EQp0G34qsny3yoSafhgm0u7gABEcnVRMffsRKYAxTrZtvkCdmvG0NQbS2djVAkPt
uOYN6KQwJcRuoZqRB8j5JXqpPmsk5zHmwxujOHnScVwAILWmc7xmS7pxr5TNeI2L
HbbDLqqhgGy4YQK+F1E3DK5I5OuczRcERttI2kzAwBSnvB7cM1ezzkWKrz1O68f4
uHt08gx1ls3vR8b31c5A3/ExzcLV/9YSVT+6SncRdD6HnS7I2H1zjq/M2Mel+E+R
U1ZjrwacsAJHnklvHiJ9nyM1Gu3xayMLPifEBCbNmdyYbc1qdNpUu4T5zn3XNhs3
OIztNEpnH3G5TVrNK01aweMmMZqn7ikyrKhIy4fgyHg/YGYMYf4mAJyVij+JuHGD
0HlWCcn7EGBbbkkvGrkObPC5pvlnycuhHnReD6/ffdxY3R+0j7sPGVmhfuOf3wec
PwZTzX2ppMByez0gEwXoPb+o8FUWOai/u2QNmwytEvDf8pIqsfSqbsZwqm0xNrPb
sK6eK2bxEuMtFwMZBwZV6CuwY1/J1UYwXyvCV7ylmzC+ssF9hgrKMUl8LaCqtNzb
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
-----END AGE ENCRYPTED FILE-----