feat: add doom f4a7b38f
Steve · 2026-10-03 17:08 6 file(s) · +428 −0
doom/banner.txt (added) +17 −0
1 +
 .              +   .                .   . .     .  .
2 +
                   .                    .       .     *
3 +
  .       *                        . . . .  .   .  + .
4 +
            "You Are Here"            .   .  +  . . .
5 +
.                 |             .  .   .    .    . .
6 +
                  |           .     .     . +.    +  .
7 +
                 \|/            .       .   . .
8 +
        . .       V          .    * . . .  .  +   .
9 +
           +      .           .   .      +
10 +
                            .       . +  .+. .
11 +
  .                      .     . + .  . .     .      .
12 +
           .      .    .     . .   . . .        ! /
13 +
      *             .    . .  +    .  .       - O -
14 +
          .     .    .  +   . .  *  .       . / |
15 +
               . + .  .  .  .. +  .
16 +
.      .  .  .  *   .  *  . +..  .            *
17 +
 .      .   . .   .   .   . .  +   .    .            +
doom/config.el (added) +64 −0
1 +
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
2 +
3 +
;; Place your private configuration here! Remember, you do not need to run 'doom
4 +
;; sync' after modifying this file!
5 +
6 +
;; Some functionality uses this to identify you, e.g. GPG configuration, email
7 +
;; clients, file templates and snippets. It is optional.
8 +
;; (setq user-full-name "John Doe"
9 +
;;       user-mail-address "john@doe.com")
10 +
11 +
(setq doom-theme 'doom-darkmatter)
12 +
(setq display-line-numbers-type "relative")
13 +
(setq org-directory "~/org/")
14 +
15 +
;; IRC password: prompted once per session, kept only in memory
16 +
(defvar my/soju--password nil)
17 +
18 +
(defun my/soju-password (&rest _)
19 +
  (or my/soju--password
20 +
      (setq my/soju--password (read-passwd "Soju password: "))))
21 +
22 +
;; Prompt before connecting, not mid-SASL handshake
23 +
(defadvice! my/irc-ask-password-a (&rest _)
24 +
  :before #'+irc/connect
25 +
  (my/soju-password))
26 +
27 +
(set-irc-server! "soju"
28 +
  `(:host "138.197.115.89"
29 +
    :port 6697
30 +
    :tls t
31 +
    :nick "stevedylandev_"
32 +
    :sasl-username "stevedylandev_/libera@emacs"
33 +
    :sasl-password my/soju-password))
34 +
35 +
(defun my/irc ()
36 +
  (interactive)
37 +
  (erc-tls :server "138.197.115.89" :port 6697
38 +
           :nick "stevedylandev_"
39 +
           :user "stevedylandev_/libera@emacspersonal"
40 +
           :password "REDACTED"))
41 +
42 +
(after! elfeed-org
43 +
  (setq rmh-elfeed-org-files (list "~/org/elfeed.org")))
44 +
45 +
(defvar my/dashboard-banner-file (expand-file-name "banner.txt" doom-user-dir)
46 +
  "Text file holding the ASCII banner for the Doom dashboard.")
47 +
48 +
(defun my/file-ascii-banner ()
49 +
  (if (file-readable-p my/dashboard-banner-file)
50 +
      (propertize
51 +
       (with-temp-buffer
52 +
         (insert-file-contents my/dashboard-banner-file)
53 +
         (string-trim-right (buffer-string)))
54 +
       'face '+dashboard-banner)
55 +
    (+dashboard-draw-ascii-banner-fn)))
56 +
57 +
(setq +dashboard-ascii-banner-fn #'my/file-ascii-banner)
58 +
59 +
 (custom-set-faces!
60 +
    `(+dashboard-banner :foreground ,(doom-color 'white)))
61 +
62 +
(setq +dashboard-functions
63 +
        '(+dashboard-widget-banner
64 +
          +dashboard-widget-loaded))
doom/custom.el (added) +13 −0
1 +
;;; -*- lexical-binding: t -*-
2 +
(custom-set-variables
3 +
 ;; custom-set-variables was added by Custom.
4 +
 ;; If you edit it by hand, you could mess it up, so be careful.
5 +
 ;; Your init file should contain only one such instance.
6 +
 ;; If there is more than one, they won't work right.
7 +
 )
8 +
(custom-set-faces
9 +
 ;; custom-set-faces was added by Custom.
10 +
 ;; If you edit it by hand, you could mess it up, so be careful.
11 +
 ;; Your init file should contain only one such instance.
12 +
 ;; If there is more than one, they won't work right.
13 +
 )
doom/init.el (added) +205 −0
1 +
;;; $DOOMDIR/init.el -*- lexical-binding: t; -*-
2 +
3 +
;; This file controls what Doom modules are enabled and what order they load
4 +
;; in. Remember to run 'doom sync' after modifying it!
5 +
6 +
;; NOTE: Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
7 +
;;   documentation. There you'll find a link to Doom's Module Index where all of
8 +
;;   our modules are listed, including what flags they support.
9 +
10 +
;; NOTE: Move your cursor over a module's name (or its flags) and press 'K' (or
11 +
;;   'C-c c k' for non-vim users) to view its documentation. This works on flags
12 +
;;   as well (those symbols that start with a plus).
13 +
;;
14 +
;;   Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
15 +
;;   directory (for easy access to its source code).
16 +
17 +
(doom! :input
18 +
       ;;bidi              ; (tfel ot) thgir etirw uoy gnipleh
19 +
       ;;chinese
20 +
       ;;japanese
21 +
       ;;layout            ; auie,ctsrnm is the superior home row
22 +
23 +
       :completion
24 +
       ;;company           ; the ultimate code completion backend
25 +
       (corfu +orderless)  ; complete with cap(f), cape and a flying feather!
26 +
       ;;helm              ; the *other* search engine for love and life
27 +
       ;;ido               ; the other *other* search engine...
28 +
       ;;ivy               ; a search engine for love and life
29 +
       vertico           ; the search engine of the future
30 +
31 +
       :ui
32 +
       ;;deft              ; notational velocity for Emacs
33 +
       doom              ; what makes DOOM look the way it does
34 +
       dashboard         ; a nifty splash screen for Emacs
35 +
       ;;doom-quit         ; DOOM quit-message prompts when you quit Emacs
36 +
       ;;(emoji +unicode)  ; 🙂
37 +
       hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
38 +
       ;;indent-guides     ; highlighted indent columns
39 +
       ;;ligatures         ; ligatures and symbols to make your code pretty again
40 +
       ;;minimap           ; show a map of the code on the side
41 +
       modeline          ; snazzy, Atom-inspired modeline, plus API
42 +
       ;;nav-flash         ; blink cursor line after big motions
43 +
       ;;neotree           ; a project drawer, like NERDTree for vim
44 +
       ophints           ; highlight the region an operation acts on
45 +
       (popup +defaults)   ; tame sudden yet inevitable temporary windows
46 +
       ;;smooth-scroll     ; So smooth you won't believe it's not butter
47 +
       ;;tabs              ; a tab bar for Emacs
48 +
       ;;treemacs          ; a project drawer, like neotree but cooler
49 +
       ;;unicode           ; extended unicode support for various languages
50 +
       (vc-gutter +pretty) ; vcs diff in the fringe
51 +
       vi-tilde-fringe   ; fringe tildes to mark beyond EOB
52 +
       ;;window-select     ; visually switch windows
53 +
       workspaces        ; tab emulation, persistence & separate workspaces
54 +
       ;;zen               ; distraction-free coding or writing
55 +
56 +
       :editor
57 +
       (evil +everywhere); come to the dark side, we have cookies
58 +
       file-templates    ; auto-snippets for empty files
59 +
       fold              ; (nigh) universal code folding
60 +
       ;;(format +onsave)  ; automated prettiness
61 +
       ;;god               ; run Emacs commands without modifier keys
62 +
       ;;lispy             ; vim for lisp, for people who don't like vim
63 +
       ;;multiple-cursors  ; editing in many places at once
64 +
       ;;objed             ; text object editing for the innocent
65 +
       ;;parinfer          ; turn lisp into python, sort of
66 +
       ;;rotate-text       ; cycle region at point between text candidates
67 +
       snippets          ; my elves. They type so I don't have to
68 +
       (whitespace +guess +trim)  ; a butler for your whitespace
69 +
       ;;word-wrap         ; soft wrapping with language-aware indent
70 +
71 +
       :emacs
72 +
       dired             ; making dired pretty [functional]
73 +
       electric          ; smarter, keyword-based electric-indent
74 +
       eww               ; the internet is gross
75 +
       ;;ibuffer           ; interactive buffer management
76 +
       tramp             ; remote files at your arthritic fingertips
77 +
       undo              ; persistent, smarter undo for your inevitable mistakes
78 +
       vc                ; version-control and Emacs, sitting in a tree
79 +
80 +
       :term
81 +
       ;;eshell            ; the elisp shell that works everywhere
82 +
       ;;shell             ; simple shell REPL for Emacs
83 +
       ;;term              ; basic terminal emulator for Emacs
84 +
       vterm             ; almost the best terminal emulation in Emacs
85 +
       ;;ghostel           ; the best terminal emulation in Emacs
86 +
87 +
       :checkers
88 +
       syntax              ; tasing you for every semicolon you forget
89 +
       ;;(spell +flyspell) ; tasing you for misspelling mispelling
90 +
       ;;grammar           ; tasing grammar mistake every you make
91 +
92 +
       :tools
93 +
       ;;ansible
94 +
       ;;biblio            ; Writes a PhD for you (citation needed)
95 +
       ;;collab            ; buffers with friends
96 +
       ;;debugger          ; stepping through code, to help you add bugs
97 +
       ;;direnv
98 +
       ;;docker
99 +
       ;;editorconfig      ; let someone else argue about tabs vs spaces
100 +
       ;;ein               ; tame Jupyter notebooks with emacs
101 +
       (eval +overlay)     ; run code, run (also, repls)
102 +
       lookup              ; navigate your code and its documentation
103 +
       ;;llm               ; when I said you needed friends, I didn't mean...
104 +
       ;;(lsp +eglot)      ; M-x vscode
105 +
       magit             ; a git porcelain for Emacs
106 +
       ;;make              ; run make tasks from Emacs
107 +
       ;;pass              ; password manager for nerds
108 +
       ;;pdf               ; pdf enhancements
109 +
       ;;terraform         ; infrastructure as code
110 +
       ;;tmux              ; an API for interacting with tmux
111 +
       ;;tree-sitter       ; syntax and parsing, sitting in a tree...
112 +
       ;;upload            ; map local to remote projects via ssh/ftp
113 +
114 +
       :os
115 +
       (:if (featurep :system 'macos) macos)  ; improve compatibility with macOS
116 +
       ;;tty               ; improve the terminal Emacs experience
117 +
118 +
       :lang
119 +
       ;;ada               ; In strong typing we (blindly) trust
120 +
       ;;(agda +local)     ; types of types of types of types...
121 +
       ;;beancount         ; mind the GAAP
122 +
       ;;(cc +lsp)         ; C > C++ == 1
123 +
       ;;clojure           ; java with a lisp
124 +
       ;;common-lisp       ; if you've seen one lisp, you've seen them all
125 +
       ;;coq               ; proofs-as-programs
126 +
       ;;crystal           ; ruby at the speed of c
127 +
       ;;csharp            ; unity, .NET, and mono shenanigans
128 +
       ;;data              ; config/data formats
129 +
       ;;(dart +flutter)   ; paint ui and not much else
130 +
       ;;dhall
131 +
       ;;elixir            ; erlang done right
132 +
       ;;elm               ; care for a cup of TEA?
133 +
       emacs-lisp        ; drown in parentheses
134 +
       ;;erlang            ; an elegant language for a more civilized age
135 +
       ;;ess               ; emacs speaks statistics
136 +
       ;;factor
137 +
       ;;faust             ; dsp, but you get to keep your soul
138 +
       ;;fortran           ; in FORTRAN, GOD is REAL (unless declared INTEGER)
139 +
       ;;fsharp            ; ML stands for Microsoft's Language
140 +
       ;;fstar             ; (dependent) types and (monadic) effects and Z3
141 +
       ;;gdscript          ; the language you waited for
142 +
       (go +lsp)         ; the hipster dialect
143 +
       ;;(graphql +lsp)    ; Give queries a REST
144 +
       ;;(haskell +lsp)    ; a language that's lazier than I am
145 +
       ;;hy                ; readability of scheme w/ speed of python
146 +
       ;;idris             ; a language you can depend on
147 +
       ;;json              ; At least it ain't XML
148 +
       ;;janet             ; Fun fact: Janet is me!
149 +
       ;;(java +lsp)       ; the poster child for carpal tunnel syndrome
150 +
       javascript        ; all(hope(abandon(ye(who(enter(here))))))
151 +
       ;;julia             ; a better, faster MATLAB
152 +
       ;;kotlin            ; a better, slicker Java(Script)
153 +
       ;;latex             ; writing papers in Emacs has never been so fun
154 +
       ;;lean              ; for folks with too much to prove
155 +
       ;;ledger            ; be audit you can be
156 +
       lua               ; one-based indices? one-based indices
157 +
       markdown          ; writing docs for people to ignore
158 +
       ;;nim               ; python + lisp at the speed of c
159 +
       ;;nix               ; I hereby declare "nix geht mehr!"
160 +
       ;;ocaml             ; an objective camel
161 +
       ;;odin              ; C, minus its footguns
162 +
       org               ; organize your plain life in plain text
163 +
       ;;php               ; perl's insecure younger brother
164 +
       ;;plantuml          ; diagrams for confusing people more
165 +
       ;;graphviz          ; diagrams for confusing yourself even more
166 +
       ;;purescript        ; javascript, but functional
167 +
       ;;python            ; beautiful is better than ugly
168 +
       ;;qt                ; the 'cutest' gui framework ever
169 +
       ;;racket            ; a DSL for DSLs
170 +
       ;;raku              ; the artist formerly known as perl6
171 +
       ;;rest              ; Emacs as a REST client
172 +
       ;;rst               ; ReST in peace
173 +
       ;;(ruby +rails)     ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
174 +
       (rust +lsp)       ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
175 +
       ;;scad              ; trust the preview, regret the render
176 +
       ;;scala             ; java, but good
177 +
       ;;(scheme +guile)   ; a fully conniving family of lisps
178 +
       sh                ; she sells {ba,z,fi}sh shells on the C xor
179 +
       ;;sml
180 +
       ;;solidity          ; do you need a blockchain? No.
181 +
       ;;swift             ; who asked for emoji variables?
182 +
       ;;terra             ; Earth and Moon in alignment for performance.
183 +
       web               ; the tubes
184 +
       ;;yaml              ; JSON, but readable
185 +
       ;;zig               ; C, but simpler
186 +
187 +
       :email
188 +
       ;;(mu4e +org +gmail)
189 +
       ;;notmuch
190 +
       ;;(wanderlust +gmail)
191 +
192 +
       :app
193 +
       calendar
194 +
       ;;emms
195 +
       ;;everywhere        ; *leave* Emacs!? You must be joking
196 +
       irc               ; how neckbeards socialize
197 +
       (rss +org)        ; emacs as an RSS reader
198 +
199 +
       :config
200 +
       ;;literate
201 +
       (default +bindings +smartparens))
202 +
203 +
;; If you're a dark-mode user who suffers from the "flash of white Emacs" when
204 +
;; you first open Emacs, uncomment this (and adjust the color as you like).
205 +
;; (add-to-list 'initial-frame-alist '(background-color . "#000000"))
doom/packages.el (added) +56 −0
1 +
;;; $DOOMDIR/packages.el -*- lexical-binding: t; no-byte-compile: t -*-
2 +
3 +
;; To install a package:
4 +
;;
5 +
;;   1. Declare them here in a `package!' statement,
6 +
;;   2. Run 'doom sync' in the shell,
7 +
;;   3. Restart Emacs.
8 +
;;
9 +
;; Use 'C-h f package\!' to look up documentation for the `package!' macro.
10 +
11 +
12 +
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
13 +
;; (package! some-package)
14 +
15 +
;; To install a package directly from a remote git repo, you must specify a
16 +
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
17 +
;; https://github.com/radian-software/straight.el#the-recipe-format
18 +
;; (package! another-package
19 +
;;   :recipe (:host github :repo "username/repo"))
20 +
21 +
;; If the package you are trying to install does not contain a PACKAGENAME.el
22 +
;; file, or is located in a subdirectory of the repo, you'll need to specify
23 +
;; `:files' in the `:recipe':
24 +
;; (package! this-package
25 +
;;   :recipe (:host github :repo "username/repo"
26 +
;;            :files ("some-file.el" "src/lisp/*.el")))
27 +
28 +
;; If you'd like to disable a package included with Doom, you can do so here
29 +
;; with the `:disable' property:
30 +
;; (package! builtin-package :disable t)
31 +
32 +
;; You can override the recipe of a built in package without having to specify
33 +
;; all the properties for `:recipe'. These will inherit the rest of its recipe
34 +
;; from Doom or MELPA/ELPA/Emacsmirror:
35 +
;; (package! builtin-package :recipe (:nonrecursive t))
36 +
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
37 +
38 +
;; Specify a `:branch' to install a package from a particular branch or tag.
39 +
;; This is required for some packages whose default branch isn't 'master' (which
40 +
;; our package manager can't deal with; see radian-software/straight.el#279)
41 +
;; (package! builtin-package :recipe (:branch "develop"))
42 +
43 +
;; Use `:pin' to specify a particular commit to install.
44 +
;; (package! builtin-package :pin "1a2b3c4d5e")
45 +
46 +
47 +
;; Doom's packages are pinned to a specific commit and updated from release to
48 +
;; release. The `unpin!' macro allows you to unpin single packages...
49 +
;; (unpin! pinned-package)
50 +
;; ...or multiple packages
51 +
;; (unpin! pinned-package another-pinned-package)
52 +
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
53 +
;; (unpin! t)
54 +
55 +
(package! kitty-graphics
56 +
  :recipe (:host github :repo "cashmeredev/kitty-graphics.el"))
doom/themes/doom-darkmatter-theme.el (added) +73 −0
1 +
;;; doom-darkmatter-theme.el -*- lexical-binding: t; -*-
2 +
3 +
;;; doom-darkmatter-theme.el --- Darkmatter for Doom -*- lexical-binding: t; -*-
4 +
(require 'doom-themes)
5 +
6 +
(def-doom-theme doom-darkmatter
7 +
  "Darkmatter (https://darkmattertheme.com), based on Black Metal Bathory."
8 +
9 +
  ;; name        default   256       16
10 +
  ((bg         '("#121113" nil       nil))
11 +
   (bg-alt     '("#121212" nil       nil))
12 +
   (base0      '("#0b0a0b" "black"   "black"))
13 +
   (base1      '("#121212" "#1c1c1c" "brightblack"))
14 +
   (base2      '("#1a191a" "#262626" "brightblack"))
15 +
   (base3      '("#222222" "#303030" "brightblack"))
16 +
   (base4      '("#333333" "#444444" "brightblack"))
17 +
   (base5      '("#555555" "#585858" "brightblack"))
18 +
   (base6      '("#777777" "#767676" "brightblack"))
19 +
   (base7      '("#999999" "#9e9e9e" "brightblack"))
20 +
   (base8      '("#c1c1c1" "#bcbcbc" "white"))
21 +
   (fg         '("#c1c1c1" "#bcbcbc" "white"))
22 +
   (fg-alt     '("#999999" "#9e9e9e" "brightwhite"))
23 +
24 +
   (grey       base5)          ; comments; Darkmatter's #333333 is very dim, see note
25 +
   (red        '("#aa6c6c" "#af5f5f" "red"))   ; added for errors
26 +
   (orange     '("#e78a53" "#d7875f" "brightred"))
27 +
   (green      '("#fbcb97" "#ffd7af" "green"))  ; strings
28 +
   (teal       '("#5f8787" "#5f8787" "brightgreen"))
29 +
   (yellow     '("#e78a53" "#d7875f" "yellow"))
30 +
   (blue       '("#888888" "#878787" "brightblue"))
31 +
   (dark-blue  '("#666666" "#626262" "blue"))
32 +
   (magenta    '("#999999" "#9e9e9e" "brightmagenta"))
33 +
   (violet     '("#aaaaaa" "#a8a8a8" "magenta"))
34 +
   (cyan       '("#aaaaaa" "#a8a8a8" "brightcyan"))
35 +
   (dark-cyan  '("#5f8787" "#5f8787" "cyan"))
36 +
37 +
   ;; semantic roles
38 +
   (highlight      orange)
39 +
   (vertical-bar   base3)
40 +
   (selection      base3)
41 +
   (builtin        magenta)
42 +
   (comments       base5)
43 +
   (doc-comments   base6)
44 +
   (constants      violet)
45 +
   (functions      blue)
46 +
   (keywords       magenta)
47 +
   (methods        blue)
48 +
   (operators      fg-alt)
49 +
   (type           orange)
50 +
   (strings        green)
51 +
   (variables      teal)
52 +
   (numbers        violet)
53 +
   (region         base3)
54 +
   (error          red)
55 +
   (warning        orange)
56 +
   (success        green)
57 +
   (vc-modified    orange)
58 +
   (vc-added       green)
59 +
   (vc-deleted     red)
60 +
61 +
   ;; modeline
62 +
   (modeline-fg     fg)
63 +
   (modeline-fg-alt base6)
64 +
   (modeline-bg     base1)
65 +
   (modeline-bg-inactive bg-alt))
66 +
67 +
  ;; extra face tweaks
68 +
  (((line-number &override) :foreground base4)
69 +
   ((line-number-current-line &override) :foreground orange)
70 +
   (mode-line :background modeline-bg :foreground modeline-fg)
71 +
   (mode-line-inactive :background modeline-bg-inactive :foreground modeline-fg-alt)))
72 +
73 +
;;; doom-darkmatter-theme.el ends here