summaryrefslogtreecommitdiff
path: root/doom
diff options
context:
space:
mode:
authorMagdalena Szweda <hi@roughlynamed.net>2026-10-03 16:18:17 +0200
committerMagdalena Szweda <hi@roughlynamed.net>2026-10-03 19:18:16 +0200
commit2874ef1887cefc47ce3dd7e1d7602bb490bf353f (patch)
tree545c41eb843501a6c75e8945e46ef1ba7c53c75e /doom
parenta470dbd23c591e43bd5e801ef4be43101cb23548 (diff)
config(org): make $DOOMDIR/packages.el fully defined within config.orgHEADtrunk
Diffstat (limited to 'doom')
-rw-r--r--doom/.config/doom/config.el16
-rw-r--r--doom/.config/doom/config.org117
-rw-r--r--doom/.config/doom/packages.el41
3 files changed, 121 insertions, 53 deletions
diff --git a/doom/.config/doom/config.el b/doom/.config/doom/config.el
index d8a7bad..02f9c9f 100644
--- a/doom/.config/doom/config.el
+++ b/doom/.config/doom/config.el
@@ -180,6 +180,11 @@
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext"))
+(map!
+ :leader
+ :prefix "o"
+ :desc "Mail" "m" #'gnus)
+
(use-package! jabber
:config
@@ -375,6 +380,7 @@ emms-cache-file (concat doom-cache-dir "emms-cache"))
(apply fn args))))
(setq org-directory "~/org/")
+(setq org-agenda-files "~/org/todo.org")
(after! org
(setq
@@ -579,16 +585,6 @@ org-html-postamble nil))
:desc "Elpher" "e" #'elpher
:desc "Browse Elpher" "b" #'elpher-browse-url-elpher)
-(use-package! mosey
- :commands (mosey-forward mosey-backward
- mosey-forward-bounce mosey-backward-bounce
- mosey-forward-cycle mosey-backward-cycle))
-
-(map! :leader
- (:prefix ("k" . "mosey")
- :desc "Mosey backward" "a" #'mosey-backward-bounce
- :desc "Mosey forward" "e" #'mosey-forward-bounce))
-
(map!
:leader
:prefix "o"
diff --git a/doom/.config/doom/config.org b/doom/.config/doom/config.org
index 1216415..deb8454 100644
--- a/doom/.config/doom/config.org
+++ b/doom/.config/doom/config.org
@@ -34,7 +34,13 @@ Load the directory with additional, local themes
This currently mostly loads the emacs port of the Evergarden theme (made by me!)
at [[https://codeberg.org/roughlynamed/emacs-evergarden][roughlynamed/emacs-evergarden]], also the fortune-gold theme.
The reason i use modus-vivendi instead of my evergarden port is because i dont like evergarden (dont tell the devs though!), seeing it not have an emacs port just made me sad.
-I also use tango from time-to-time, thats the comment.
+
+For this to work, we need modus & ef themes installed.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! modus-themes)
+ (package! ef-themes)
+#+end_src
+
#+begin_src emacs-lisp
(add-to-list 'custom-theme-load-path
"~/.config/doom/extra-themes/")
@@ -61,6 +67,10 @@ I dont like rln, i just dont
** Modeline
mood-line is a nice & simple modeline for emacs!
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ ;; (package! mood-line)
+#+end_src
+
#+begin_src emacs-lisp
;; (use-package! mood-line
;; :config
@@ -70,9 +80,12 @@ mood-line is a nice & simple modeline for emacs!
#+end_src
The above is commented if the below is in action.
I might try out the default Emacs modeline for a bit sometime, or maybe spacemacs' ~spaceline~
-
+** Minions
The default Emacs modeline, by default, spills out EVERY minor & major mode into the modeline.
That's kind of yucky, so the ~minions~ package fixes it by hiding most of them & having a menu for which to show.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! minions)
+#+end_src
Now, let's configure it!
#+begin_src emacs-lisp
@@ -109,6 +122,11 @@ Scroll margin - when the cursor reaches 3 lines above/below the window bottom/to
Breadcrumb is a package that shows you where you are in a file at the very top of the window. Editing this section of this file, the breadcrumb shows:
~stow/d/.config/doom/config.org : UI~,
this is because we are in the UI section of the file.
+
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! breadcrumb)
+#+end_src
+
#+begin_src emacs-lisp
(use-package! breadcrumb
:defer t
@@ -160,6 +178,10 @@ eglot-ensure makes sure that eglot is enabled and working when opening a prog-mo
#+end_src
Then we can set up ~eglot-booster~, which adds ~emacs-lsp-booster~ integration into eglot.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! eglot-booster
+ :recipe (:host github :repo "jdtsmith/eglot-booster"))
+#+end_src
emacs-lsp-booster, well, boosts lsp (with rust!)
#+begin_src emacs-lisp
(use-package! eglot-booster
@@ -265,7 +287,11 @@ Here we hook the new oxfmt formatter into:
** Auth
To send mail, we need to log into everything.
Instead of typing out passwords every time, we use the ~~.authinfo.gpg~ file (can also be without the gpg encryption).
-First we set up pinentry.
+First we install & set up pinentry.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! pinentry)
+#+end_src
+
#+begin_src emacs-lisp
(use-package! pinentry
:config
@@ -373,10 +399,21 @@ I'm not a fan of html in my emails as i find it rendering bad and being hard to
(add-to-list 'mm-discouraged-alternatives "text/html")
(add-to-list 'mm-discouraged-alternatives "text/richtext"))
#+end_src
+
+While we're at it, let's make opening gnus easier.
+#+begin_src emacs-lisp
+ (map!
+ :leader
+ :prefix "o"
+ :desc "Mail" "m" #'gnus)
+#+end_src
* Jabber
~Jabber? I hardly know her!~
Excuse the bad pun, jabber.el is a way to use XMPP in Emacs.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! jabber)
+#+end_src
#+begin_src emacs-lisp
(use-package! jabber
:config
@@ -415,9 +452,10 @@ As to not rely on ~M-x~ commands, define a binding as so
#+end_quote
EMMS, the Emacs MultiMedia System (but mostly its just used for music).
-Now, emms has this issue where mpd and the emms cache fall out of sync. This is a documented issue so lets make them catch up by default.
+EMMS has a Doom Emacs module, so it doesnt require a ~(package!)~ line
-Let's make a quick helper function.
+
+Here, a quick function to help with mpd caching on emms (a documented issue)
#+begin_src emacs-lisp
(defun emms--wait-for-mpd-update (callback)
"Poll MPD status until updating_db clears, then call CALLBACK."
@@ -450,6 +488,7 @@ And wire it into emms
Declare the package block and set up the commands.
~:commands~ in elisp is used to eagerly load functions even when a package is lazy loaded.
The following makes the commands ~emms~ and ~emms-browser~ available even before emms itself is loaded.
+
#+begin_src emacs-lisp
(use-package! emms
:commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all)
@@ -599,9 +638,8 @@ I tried my best to match these to the default bindings under ~C-x v~
#+end_src
** vc-jj
~vc-jj~ adds jujutsu integration to Emacs's ~vc~!
-#+begin_src emacs-lisp :tangle no
- ;; required in packages.el
- ;; (package! vc-jj)
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! vc-jj)
#+END_SRC
Then, we actually enable it.
@@ -687,6 +725,7 @@ Org is Emacs's version of markdown, and is what this file is written in.
Tell org what directory to use
#+begin_src emacs-lisp
(setq org-directory "~/org/")
+ (setq org-agenda-files "~/org/todo.org")
#+end_src
Now it's time to get to the guts; the main org config.
But first, some good 'ol self-documenting code:
@@ -717,11 +756,15 @@ Every code block defined above and below is made via org-babel and the following
(C . t)
(lisp . t))))
#+end_src
+
** poly-org
~poly-org~ lets you use LSP and autocompletion in org code blocks without pressing ~C-c '~
By default, org lets you 'enter' code blocks with ~C-c '~ and have actual autocompletion/LSP features.
-But, typing that every block is annoying (especially with a literate config), that's why ~poly-org~ does the same thing* as ~C-c '~, but it happens when
-the cursor hovers over a block.
+But, typing that every block is annoying (especially with a literate config), that's why ~poly-org~ does the same thing* as ~C-c '~, but it happens when the cursor hovers over a block.
+
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! poly-org)
+#+end_src
#+begin_src emacs-lisp
(use-package! poly-org
:hook (org-mode . poly-org-mode))
@@ -749,6 +792,11 @@ When capturing a new org note, all windows are deleted, and the capture window i
As much as i'd love to put it under its own higher header, that would be nonsensical.
Org roam is org's way of a Zettelkasten style knowledge place. Something like obsidian, logseq or ~zk~. Another plus is everything lives in a ~SQLite~ database.
+Here we unpin org-roam from Doom's version, as it is reccomended for custom configs like this.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (unpin! org-roam)
+#+end_src
+
Point org-roam at the org directory (declared seperately).
#+begin_src emacs-lisp
(after! org-roam
@@ -881,8 +929,11 @@ Dont postamble in generated html
** org-roam-ui
~org-roam-ui~ makes a Obsidian-like graph available in the browser.
It makes a pretty graph of all your notes and puts it at http://localhost:35901.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! org-roam-ui)
+#+end_src
-Required websocket
+Websocket required
#+begin_src emacs-lisp
(use-package! websocket :after org-roam)
#+end_src
@@ -900,6 +951,10 @@ org-roam config
** org-appear
Org appear makes it so that inline code blocks (=~~=), words marked verbatim (====) and (hyper)link syntax hide when viewing the file and appear when hovered on for easy editing.
for example =[[id:xqyz][emacs]]= will become =emacs= when viewing the file, but turn into the original when the cursor is over the text.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! org-appear)
+#+end_src
+
#+begin_src emacs-lisp
(use-package! org-appear
:hook (org-mode . org-appear-mode)
@@ -911,6 +966,10 @@ for example =[[id:xqyz][emacs]]= will become =emacs= when viewing the file, but
#+end_src
** org-modern-indent
Because doom's org ~+pretty~ flag turns on org modern, and org-modern is incompatible with ~org-startup-indented~, we use the ~org-indent-modern~ package
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! org-modern-indent
+ :recipe (:host github :repo "jdtsmith/org-modern-indent"))
+#+end_src
#+begin_src emacs-lisp
(use-package! org-modern-indent
:defer t
@@ -1024,8 +1083,11 @@ Elpher? I hardly know her!
#+end_quote
Elpher is a way to use the Gemini and Gopher protocols in Emacs.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! elpher)
+#+end_src
#+begin_src emacs-lisp
-(use-package! elpher)
+ (use-package! elpher)
#+end_src
There's not much config needed except 1 (one) binding
#+begin_src emacs-lisp
@@ -1040,23 +1102,6 @@ There's not much config needed except 1 (one) binding
The ones that dont belong
#+END_QUOTE
These packages are (mostly) defined in ~packages.el~ and configured here.
-** TODO mosey
-Mosey lets you ~Mosey down~ (get it?) to different points in a code block.
-#+begin_src emacs-lisp
-(use-package! mosey
- :commands (mosey-forward mosey-backward
- mosey-forward-bounce mosey-backward-bounce
- mosey-forward-cycle mosey-backward-cycle))
-#+end_src
-TODO: make this work properly and not just go to the start/end of line
-*** Keybinds
-Keybinds for mosey, under K because m was taken by localleader bindings
-#+begin_src emacs-lisp
-(map! :leader
- (:prefix ("k" . "mosey")
- :desc "Mosey backward" "a" #'mosey-backward-bounce
- :desc "Mosey forward" "e" #'mosey-forward-bounce))
-#+end_src
** Woman
~woman~ is a way to view man pages straight in Emacs, without shelling out to the actual ~man~ binary, it stands for ~without man~
@@ -1083,6 +1128,9 @@ These are only bindings as dired is pre-installed on Emacs.
** eat
~eat~ (emulate a terminal) is a terminal emulator, in elisp, for emacs!
It is not available as a doom emacs module, so we declare it manually.
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! eat)
+#+end_src
#+begin_src emacs-lisp
(use-package! eat
:defer t)
@@ -1102,7 +1150,10 @@ This is pushing it.
#+end_quote
nov.el is a way to read EPUB's in Emacs! because why buy a kindle if you have GNU?
-Requires ~(package! nov)~ in packages.el (doom)
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! nov)
+#+end_src
+
#+begin_src emacs-lisp
(use-package! nov
:mode ("\\.epub\\'" . nov-mode)
@@ -1126,6 +1177,12 @@ Requires ~(package! nov)~ in packages.el (doom)
:n "t" #'nov-goto-toc))
#+end_src
+** try
+~try~ is a package that lets you ~try~ out other packages without fully installing them!
+#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el
+ (package! try)
+#+end_src
+That's about all ~try~ needs.
* Tramp
Tramp is a way to edit files via SSH and root owned files in Emacs.
diff --git a/doom/.config/doom/packages.el b/doom/.config/doom/packages.el
index f04f49d..b486f62 100644
--- a/doom/.config/doom/packages.el
+++ b/doom/.config/doom/packages.el
@@ -1,21 +1,36 @@
-;;; $DOOMDIR/packages.el -*- lexical-binding: t; no-byte-compile: t -*-
-(package! jabber)
-(package! mood-line)
-(package! try)
(package! modus-themes)
(package! ef-themes)
+
+;; (package! mood-line)
+
+(package! minions)
+
+(package! breadcrumb)
+
+(package! eglot-booster
+ :recipe (:host github :repo "jdtsmith/eglot-booster"))
+
+(package! pinentry)
+
+(package! jabber)
+
+(package! vc-jj)
+
+(package! poly-org)
+
(unpin! org-roam)
+
(package! org-roam-ui)
-(package! breadcrumb)
+
(package! org-appear)
-(package! elpher)
-(package! poly-org)
-(package! eat)
+
(package! org-modern-indent
:recipe (:host github :repo "jdtsmith/org-modern-indent"))
+
+(package! elpher)
+
+(package! eat)
+
(package! nov)
-(package! pinentry)
-(package! eglot-booster
- :recipe (:host github :repo "jdtsmith/eglot-booster"))
-(package! vc-jj)
-(package! minions)
+
+(package! try)