aboutsummaryrefslogtreecommitdiff
path: root/config/doom.org
diff options
context:
space:
mode:
Diffstat (limited to 'config/doom.org')
-rw-r--r--config/doom.org174
1 files changed, 174 insertions, 0 deletions
diff --git a/config/doom.org b/config/doom.org
new file mode 100644
index 0000000..b3fce4b
--- /dev/null
+++ b/config/doom.org
@@ -0,0 +1,174 @@
+#+title: Doom Literate Config
+#+author: Preston Pan
+#+date: <2023-06-09 Fri>
+#+description: My doom emacs configuration
+#+html_head: <link rel="stylesheet" type="text/css" href="../style.css" />
+
+* Configuration
+** Basic Information
+My name, and the org mode directory on my computer, as well as basic editor configuration options.
+Below is the old documentation.
+#+begin_src emacs-lisp :tangle yes
+(setq user-full-name "Preston Pan"
+ user-mail-address "prseton@nullring.xyz")
+
+(setq display-line-numbers-type t)
+
+(setq org-directory "~/org/")
+#+end_src
+- `load!' for loading external *.el files relative to this one
+- `add-load-path!' for adding directories to the `load-path', relative to
+ this file. Emacs searches the `load-path' when you load packages with
+ `require' or `use-package'.
+** Font
+Now we configure fonts:
+#+begin_src emacs-lisp :tangle yes
+(setq doom-font (font-spec :family "FiraCode Nerd Font" :size 14 :weight 'semi-light)
+ doom-variable-pitch-font (font-spec :family "Fira Sans" :size 14)
+ doom-unicode-font (font-spec :family "Symbola" :size 14)
+ doom-serif-font (font-spec :family "Fira Sans" :size 14)
+ doom-big-font (font-spec :family "FiraCode Nerd Font" :size 28))
+#+end_src
+** Color Scheme
+I'm using the catppuccin theme, which is available on github.
+#+begin_src emacs-lisp :tangle yes
+(setq doom-theme 'catppuccin)
+(setq catppuccin-flavor 'mocha)
+#+end_src
+** Doom Module and Programs Configuration
+*** IRC
+Set up circe to connect to my bouncer:
+#+begin_src emacs-lisp :tangle yes
+(after! circe
+ (set-irc-server! "nullring.xyz"
+ `(:tls t
+ :port 4095
+ :nick "LiCoO2/AndreiNet"
+ :user "LiCoO2/AndreiNet"
+ :pass ,(+pass-get-secret "ZNC"))))
+#+end_src
+*** Email
+In order to use this configuration, you must install and configure mu and mbsync.
+#+begin_src emacs-lisp :tangle yes
+(setq mu4e-get-mail-command "mbsync --config ~/.config/doom/mbsyncrc prestonpan")
+
+(setq send-mail-function 'smtpmail-send-it)
+(setq smtpmail-smtp-server "mail.nullring.xyz")
+(setq smtpmail-smtp-service 465)
+(setq smtpmail-stream-type 'ssl)
+
+(setq mu4e-drafts-folder "/Drafts")
+(setq mu4e-sent-folder "/Sent")
+(setq mu4e-trash-folder "/Trash")
+
+(setq mu4e-html2text-command "w3m -T text/html"
+ mu4e-update-interval 300
+ mu4e-headers-auto-update t
+ mu4e-view-show-images t
+ mu4e-compose-signature-auto-include nil
+ mu4e-use-fancy-chars t)
+(setq mu4e-compose-reply-ignore-address '("no-?reply" "preston@nullring.xyz"))
+#+end_src
+*** RSS
+We need to set up elfeed with a list of rss feeds.
+#+begin_src emacs-lisp :tangle yes
+(after! elfeed
+ (setq elfeed-search-filter "@1-month-ago +unread"))
+(add-hook! 'elfeed-search-mode-hook #'elfeed-update)
+(setq rmh-elfeed-org-files '("~/org/elfeed.org"))
+#+end_src
+*** Music
+In order to use this configuration, you must have mpd configured to use the same directory.
+We automatically connect to mpd.
+#+begin_src emacs-lisp :tangle yes
+(setq emms-player-mpd-music-directory "~/music/")
+(setq emms-player-list '(emms-player-mpd))
+(emms-player-mpd-connect)
+#+end_src
+*** Journal
+First we set the journal to be in the website directory:
+#+begin_src emacs-lisp :tangle yes
+
+(setq org-journal-dir "~/org/website/journal/")
+(setq org-journal-date-format "%A, %d %B %Y")
+#+end_src
+And then we add the headers needed to export the journal automatically:
+#+begin_src emacs-lisp :tangle yes
+(defun org-journal-file-header-func (time)
+ "Custom function to create journal header."
+ (concat
+ (pcase org-journal-file-type
+ (`daily "#+TITLE: Daily Journal\n#+STARTUP: showeverything\n#+DESCRIPTION: My daily journal entry\n#+AUTHOR: Preston Pan\n#+HTML_HEAD: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>")
+ (`weekly "#+TITLE: Weekly Journal\n#+STARTUP: folded")
+ (`monthly "#+TITLE: Monthly Journal\n#+STARTUP: folded")
+ (`yearly "#+TITLE: Yearly Journal\n#+STARTUP: folded"))))
+
+(setq org-journal-file-header 'org-journal-file-header-func)
+(setq org-journal-file-format "%Y%m%d.org")
+#+end_src
+*** Brain
+#+begin_src emacs-lisp :tangle yes
+(setq org-brain-path "~/org/website/brain/")
+#+end_src
+*** Roam
+#+begin_src emacs-lisp :tangle yes
+(setq org-roam-directory (file-truename "~/org/website/mindmap"))
+(setq org-roam-capture-templates '(("d" "default" plain "%?"
+ :target (file+head "${title}.org"
+ "#+title: ${title}\n#+author: Preston Pan\n#+html_head: <link rel=\"stylesheet\" type=\"text/css\" href=\"../style.css\" />\n#+html_head: <script src=\"https://polyfill.io/v3/polyfill.min.js?features=es6\"></script>\n#+html_head: <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>")
+ :unnarrowed t)))
+#+end_src
+*** Publishing
+#+begin_src emacs-lisp :tangle yes
+(require 'ox-publish)
+(setq org-publish-project-alist
+ '(("website-org"
+ :base-directory "~/org/website"
+ :base-extension "org"
+ :publishing-directory "~/website_html"
+ :recursive t
+ :publishing-function org-html-publish-to-html
+ :headline-levels 4
+ :auto-preamble t)
+ ("website-static"
+ :base-directory "~/org/website"
+ :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
+ :publishing-directory "~/website_html/"
+ :recursive t
+ :publishing-function org-publish-attachment)
+ ("website" :components ("website-org" "website-static"))))
+
+
+#+end_src
+** Keybindings
+Now we set up our keybindings for our applications:
+#+begin_src emacs-lisp :tangle yes
+(map! :leader
+ :desc "Open irc"
+ "i c" #'circe)
+(map! :leader
+ :desc "Open audio manager"
+ "m m" #'emms)
+(map! :leader
+ :desc "Open RSS feed reader"
+ "r s" #'elfeed)
+(map! :leader
+ :desc "Open password manager"
+ "p w" #'ivy-pass)
+#+end_src
+** External Packages
+we want to include some packages that don't come with doom emacs.
+*** KBD-Mode
+kbd-mode allows us to edit kmonad kbd files with syntax highlighting:
+#+begin_src emacs-lisp :tangle yes
+(use-package! kbd-mode)
+#+end_src
+*** Pinentry
+We now set up pinentry for the pass program. We need to set the mode to loopback
+in order to enable emacs to start itself as a pinentry program, and we need to allow
+loopbacks in gpg-agent.conf.
+#+begin_src emacs-lisp :tangle yes
+(use-package! pinentry
+ :init (setq epa-pinentry-mode `loopback)
+ (pinentry-start))
+#+end_src