chore: updated doom config
02a5710f
3 file(s) · +75 −5
| 12 | 12 | (setq display-line-numbers-type "relative") |
|
| 13 | 13 | (setq org-directory "~/org/") |
|
| 14 | 14 | ||
| 15 | - | ;; ZNC password: prompted once per session, kept only in memory |
|
| 15 | + | (after! org |
|
| 16 | + | (add-to-list 'org-capture-templates |
|
| 17 | + | '("b" "Bookmark" entry (file "bookmarks.org") |
|
| 18 | + | "* [[%^{URL}][%^{Title}]] %^g\n:PROPERTIES:\n:ADDED: %U\n:END:\n%?" |
|
| 19 | + | :empty-lines 1))) |
|
| 20 | + | ||
| 21 | + | ;; ZNC password: read from `pass' (gpg-encrypted), cached in memory per session |
|
| 22 | + | (require 'auth-source-pass) |
|
| 23 | + | ||
| 24 | + | (defvar my/znc-pass-entry "irc/znc" |
|
| 25 | + | "Entry in the password store holding the ZNC password.") |
|
| 26 | + | ||
| 16 | 27 | (defvar my/znc--password nil) |
|
| 17 | 28 | ||
| 18 | 29 | (defun my/znc-password (&rest _) |
|
| 19 | 30 | (or my/znc--password |
|
| 20 | - | (setq my/znc--password (read-passwd "ZNC password: ")))) |
|
| 31 | + | (setq my/znc--password |
|
| 32 | + | (or (auth-source-pass-get 'secret my/znc-pass-entry) |
|
| 33 | + | (user-error "No ZNC password in pass entry %s" my/znc-pass-entry))))) |
|
| 21 | 34 | ||
| 22 | 35 | (defun my/znc-pass (client) |
|
| 23 | 36 | "Build ZNC server password for CLIENT." |
|
| 58 | 71 | (setq +dashboard-functions |
|
| 59 | 72 | '(+dashboard-widget-banner |
|
| 60 | 73 | +dashboard-widget-loaded)) |
|
| 74 | + | ||
| 75 | + | (add-to-list 'load-path "/opt/homebrew/share/emacs/site-lisp/mu/mu4e") |
|
| 76 | + | ||
| 77 | + | ;; Make GUI Emacs see Homebrew binaries (mbsync, msmtp, pass, gpg) |
|
| 78 | + | (when (memq window-system '(mac ns)) |
|
| 79 | + | (exec-path-from-shell-initialize)) ; needs the exec-path-from-shell package |
|
| 80 | + | ||
| 81 | + | (require 'mu4e) |
|
| 82 | + | ||
| 83 | + | (setq user-mail-address "contact@stevedylan.dev" |
|
| 84 | + | user-full-name "Steve Simkins" |
|
| 85 | + | ||
| 86 | + | ;; Fetching |
|
| 87 | + | mu4e-get-mail-command "mbsync -a" |
|
| 88 | + | mu4e-update-interval 300 |
|
| 89 | + | mu4e-change-filenames-when-moving t ; required with mbsync |
|
| 90 | + | ||
| 91 | + | ;; Folders (adjust to match `mbsync -l local`) |
|
| 92 | + | mu4e-sent-folder "/local/Sent" |
|
| 93 | + | mu4e-drafts-folder "/local/Drafts" |
|
| 94 | + | mu4e-trash-folder "/local/Trash" |
|
| 95 | + | mu4e-refile-folder "/local/Archive" |
|
| 96 | + | ||
| 97 | + | ;; Sending via msmtp |
|
| 98 | + | sendmail-program (executable-find "msmtp") |
|
| 99 | + | send-mail-function #'sendmail-send-it |
|
| 100 | + | message-send-mail-function #'message-send-mail-with-sendmail |
|
| 101 | + | message-sendmail-envelope-from 'header |
|
| 102 | + | message-kill-buffer-on-exit t |
|
| 103 | + | mu4e-maildir-shortcuts |
|
| 104 | + | '((:maildir "/local/Inbox" :key ?i) |
|
| 105 | + | (:maildir "/local/Sent" :key ?s) |
|
| 106 | + | (:maildir "/local/Drafts" :key ?d) |
|
| 107 | + | (:maildir "/local/Archive" :key ?a) |
|
| 108 | + | (:maildir "/local/Trash" :key ?t))) |
|
| 109 | + | ||
| 110 | + | (after! gptel |
|
| 111 | + | (setq gptel-model 'claude-sonnet-5-5 |
|
| 112 | + | gptel-backend |
|
| 113 | + | (gptel-make-anthropic "Claude" |
|
| 114 | + | :stream t |
|
| 115 | + | :key #'gptel-api-key |
|
| 116 | + | :models '(claude-sonnet-5-5 claude-opus-5-5 claude-haiku-4-5-20251001)))) |
|
| 117 | + | ||
| 118 | + | (after! jabber |
|
| 119 | + | (setq jabber-account-list |
|
| 120 | + | `(("stevedylandev@xmpp.is" |
|
| 121 | + | (:password . ,(auth-source-pass-get 'secret "xmpp/stevedylandev@xmpp.is"))))) |
|
| 122 | + | (jabber-modeline-mode 1) |
|
| 123 | + | (map! :leader "o j" #'jabber-roster)) ; optional binding |
|
| 80 | 80 | :term |
|
| 81 | 81 | ;;eshell ; the elisp shell that works everywhere |
|
| 82 | 82 | ;;shell ; simple shell REPL for Emacs |
|
| 83 | - | ;;term ; basic terminal emulator for Emacs |
|
| 83 | + | term ; basic terminal emulator for Emacs |
|
| 84 | 84 | vterm ; almost the best terminal emulation in Emacs |
|
| 85 | 85 | ;;ghostel ; the best terminal emulation in Emacs |
|
| 86 | 86 | ||
| 100 | 100 | ;;ein ; tame Jupyter notebooks with emacs |
|
| 101 | 101 | (eval +overlay) ; run code, run (also, repls) |
|
| 102 | 102 | lookup ; navigate your code and its documentation |
|
| 103 | - | ;;llm ; when I said you needed friends, I didn't mean... |
|
| 103 | + | llm ; when I said you needed friends, I didn't mean... |
|
| 104 | 104 | ;;(lsp +eglot) ; M-x vscode |
|
| 105 | 105 | magit ; a git porcelain for Emacs |
|
| 106 | 106 | ;;make ; run make tasks from Emacs |
|
| 144 | 144 | ;;(haskell +lsp) ; a language that's lazier than I am |
|
| 145 | 145 | ;;hy ; readability of scheme w/ speed of python |
|
| 146 | 146 | ;;idris ; a language you can depend on |
|
| 147 | - | ;;json ; At least it ain't XML |
|
| 147 | + | json ; At least it ain't XML |
|
| 148 | 148 | ;;janet ; Fun fact: Janet is me! |
|
| 149 | 149 | ;;(java +lsp) ; the poster child for carpal tunnel syndrome |
|
| 150 | 150 | javascript ; all(hope(abandon(ye(who(enter(here)))))) |
|
| 54 | 54 | ||
| 55 | 55 | (package! kitty-graphics |
|
| 56 | 56 | :recipe (:host github :repo "cashmeredev/kitty-graphics.el")) |
|
| 57 | + | (package! exec-path-from-shell) |
|
| 58 | + | (package! jabber |
|
| 59 | + | :recipe (:type git :repo "https://git.thanosapollo.org/emacs-jabber" |
|
| 60 | + | :files (:defaults "lisp/jabber-omemo-core.dylib") |
|
| 61 | + | ;; Build OMEMO native module. Needs `brew install mbedtls@3' |
|
| 62 | + | ;; (4.x dropped mbedtls/aes.h); macOS has no getrandom, so shim it. |
|
| 63 | + | :pre-build (("sh" "-c" "PKG_CONFIG_PATH=/opt/homebrew/opt/mbedtls@3/lib/pkgconfig CFLAGS=\"-I/opt/homebrew/opt/emacs/include '-Dgetrandom(b,n,f)=(arc4random_buf((b),(n)),(ssize_t)(n))'\" MBED_STATIC=1 make module")))) |