chore: updated doom config 02a5710f
Steve · 2026-10-05 08:29 3 file(s) · +75 −5
doom/config.el +65 −2
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
doom/init.el +3 −3
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))))))
doom/packages.el +7 −0
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"))))