This is my personal literate Emacs configuration. With it I aim to get the most out of Emacs there where it shines most, which in my humble opinion is note-taking, writing and literate programming.
Objectives
I aim to make of Emacs my tool of choice to:
- Jot down notes and write documents and prose
- [X] diary
- [X] scratchpad
- [X] zettelkasten
- Write code and version control
- [X] Jupyter-style notebooks within Org Mode
- [X] Magit
- [ ] IDE
- Manage the configuration of my machine
- [X] literate dotfiles
- Manage email
- [ ] email client
- Publish to the web and in document form
- [ ] blog
- [ ] LaTeX
As explained by Luca Ambiaghi,
We can run M-x
straight-freeze-versionsto write the filestraight/versions/default.el. The content of the file can then be kept in a code block, under version control. The code block can then be tangle again tostraight/versions/default.el. We can then restore package versions using M-xstraight-thaw-versions.
(("Emacs-wgrep" . "3132abd3750b8c87cbcf6942db952acfab5edccd")
("Highlight-Indentation-for-Emacs" . "d88db4248882da2d4316e76ed673b4ac1fa99ce3")
("ace-window" . "77115afc1b0b9f633084cf7479c767988106c196")
("alert" . "c762380ff71c429faf47552a83605b2578656380")
("all-the-icons-completion" . "e09e65bf05b247ea0e2bdc5d36ea5a58fc2ed69b")
("all-the-icons.el" . "f491f39c21336d354e85bdb4cca281e0a0c2f880")
("autothemer" . "6277b086ec2d0a17f5722caf6a0ec5ca16cb5486")
("avy" . "be612110cb116a38b8603df367942e2bb3d9bdbe")
("cfrs" . "f3a21f237b2a54e6b9f8a420a9da42b4f0a63121")
("circadian.el" . "52e336d9bb66cfd6d6dc5b9213ea21796ac873d4")
("closql" . "ea49aa1d12ad7fb5d8e9f87eec033732aff1ee7a")
("company-mode" . "7c24dc8668af5aea8a5d07aeceda5fac7a2a85b5")
("compat" . "9428a64eb8a579f35d57bc4d4cdb6c5cf10806c1")
("dash.el" . "6db80c711ce947f6c6fa11e5c2257fff2c79d139")
("delight" . "70cb8cec9e5eb2c24364e065d85c2ea8f14a587c")
("dirvish" . "119f9f59a618bb7b476c93e9ab1d7542c5c1df41")
("ef-themes" . "86b92a5567800c50ea316d97846df138f34a3307")
("el-get" . "f3f1edd434221dc6daef565ebf77fa40c4cead36")
("el-patch" . "e358febcb03f71f3aed4b37f99990ae865f1124b")
("eldoc" . "a2aaed2b7c70c1f28dd212fe2f4304ce89c338d7")
("elisp-refs" . "bf3cca8f74065b1b31036f461e3a093b162311bd")
("elpy" . "7ff8ffa918411887d165764f7a5a12bc46646e73")
("emacs-async" . "bb0509060ddc9c94bc7db7bddb12995acb3b53e4")
("emacs-calfw" . "03abce97620a4a7f7ec5f911e669da9031ab9088")
("emacs-dashboard" . "0cae7b872552c73da2ff61de6623b8c3196f1937")
("emacs-web-server" . "6260232da8b53c4e214bc5e427ec00c3ebdd9869")
("emacs-websocket" . "40c208eaab99999d7c1e4bea883648da24c03be3")
("emacs-which-key" . "df6b0cb8449812e7fb200bc852107fa7eb708496")
("emacsmirror-mirror" . "8e7cbfea765e5f9095c6f130a5efd949c04f9c72")
("emacsql" . "64012261f65fcdd7ea137d1973ef051af1dced42")
("embrace.el" . "dd5da196e5bcc5e6d87e1937eca0c21da4334ef2")
("epl" . "78ab7a85c08222cd15582a298a364774e3282ce6")
("evil" . "b291039b0c6ffc3b2f3c9f02b8ad2f0041127b12")
("evil-god-state" . "3d44197dc0a1fb40e7b7ff8717f8a8c339ce1d40")
("evil-org-mode" . "b1f309726b1326e1a103742524ec331789f2bf94")
("expand-region.el" . "b70feaa644310dc2d599dc277cd20a1f2b6446ac")
("f.el" . "19e1da061e759b05e8c480b426287a063ca39484")
("flycheck" . "5f2ef177cb21ae8b73714575802beef04abd0f5e")
("forge" . "dc777b64ad33d0b70dc2067af8401a9598d21764")
("ghub" . "0fd648f0529f34b5da441d54c9dbff7810477d12")
("gntp.el" . "767571135e2c0985944017dc59b0be79af222ef5")
("gnu-elpa-mirror" . "be1351c478935b8348c19d3197cd5d84330c708d")
("god-mode" . "607aff10a7b27a8aa0c1a15c2c39337ab17cfda7")
("goto-chg" . "278cd3e6d5107693aa2bb33189ca503f22f227d0")
("helpful" . "c57ff0d284b50ff430fe1f13fd48deaa0d1a910e")
("ht.el" . "1c49aad1c820c86f7ee35bf9fff8429502f60fef")
("hydra" . "317e1de33086637579a7aeb60f77ed0405bf359b")
("let-alist" . "021fc10df2e44faba4728d849ee767cf890aa51a")
("log4e" . "737d275eac28dbdfb0b26d28e99da148bfce9d16")
("lsp-mode" . "d14d3d5e1e21eb658b2cf2f6be34f43072027328")
("magit" . "93d30c5459e75a0d53581da2a5539a54efa329ab")
("markdown-mode" . "f8a91fef75d99b83591417df856b5240d78ae563")
("melpa" . "bdb191b4cd65bd60a905ec2866471031abec7f23")
("moody" . "888e6fb37eb5122803c70ae60d28fc54589e26c0")
("multiple-cursors.el" . "234806c832994cadedb42596fe235e91bbd59e8c")
("no-littering" . "fcfd51fbdf08469e6d1b59bc4bd2d75aa708c791")
("nongnu-elpa" . "14e9631cd2b81f66ed551b14d31811a75cc53a4b")
("olivetti" . "a644ee9d24c7283435ce42e11498951e100608c9")
("orderless" . "6936fe46ef07df168a423f04efeda130b4e69753")
("org" . "8ef6205a560cd3a92f8c5f8fe34953b80121c2cb")
("org-appear" . "60ba267c5da336e75e603f8c7ab3f44e6f4e4dac")
("org-contacts" . "7f03eafaad2e5746949c0bebb98353e939c51ade")
("org-download" . "19e166f0a8c539b4144cfbc614309d47a9b2a9b7")
("org-fragtog" . "ede4ac61e8cb580f63f882bdee2b0e573cd3dd60")
("org-modern" . "63372bda43a9d0dd9940c1ec3c53f752b642ac41")
("org-pomodoro" . "3f5bcfb80d61556d35fc29e5ddb09750df962cc6")
("org-rainbow-tags" . "550cc521013ba631bb3ad5fc4acdb72b655b24b7")
("org-reveal" . "f55c851bf6aeb1bb2a7f6cf0f2b7bd0e79c4a5a0")
("org-roam" . "5c06471c3a11348342719fd9011486455adeb701")
("org-roam-timestamps" . "c4ff1e2f5b0905b5caa917249aab56ddc1de1ab3")
("org-roam-ui" . "5ac74960231db0bf7783c2ba7a19a60f582e91ab")
("org-super-agenda" . "f4f528985397c833c870967884b013cf91a1da4a")
("ox-ipynb" . "4c1cc46268a76751eec83a66d481687a0da6d668")
("page-break-lines" . "5e9ed86bb56fd076b12ae7adaf40eeaa09aed4c5")
("pdf-tools" . "c69e7656a4678fe25afbd29f3503dd19ee7f9896")
("pdf-view-restore" . "5a1947c01a3edecc9e0fe7629041a2f53e0610c9")
("pfuture" . "19b53aebbc0f2da31de6326c495038901bffb73c")
("pkg-info" . "76ba7415480687d05a4353b27fea2ae02b8d9d61")
("posframe" . "017deece88360c7297265680d78a0bb316470716")
("project" . "927a7534138b70fa80e89450c77258f9386d03a1")
("projectile" . "971cd5c4f25ff1f84ab7e8337ffc7f89f67a1b52")
("puni" . "a39a4ecac7279bed1a150a895bbc80baa7272888")
("pyvenv" . "31ea715f2164dd611e7fc77b26390ef3ca93509b")
("rainbow-delimiters" . "a32b39bdfe6c61c322c37226d66e1b6d4f107ed0")
("rainbow-mode" . "8e96388fb4d616a9dde23e712bad0d9cd048fbf0")
("rg.el" . "e9dc4ed342e0212d08fb82554dfd3c57fdfa5b1a")
("rust-mode" . "9c26dc1195ec05309ee15c014631fb9abd6cf5d2")
("rustic" . "39423d1cf4fa054c36bf9577356451f4c06ee148")
("s.el" . "dda84d38fffdaf0c9b12837b504b402af910d01d")
("spinner" . "634529bb3173e09b37499f636de70abf29d9fa8a")
("straight.el" . "ff63b154bef1ef8d92c141bd189001bff74f6982")
("super-save" . "6f6512bc44b09f7187e58772892fa330f4518c12")
("swiper" . "595d44264420d989e420351ea25b3c99528547c0")
("tablist" . "5f7b71a92bfb25418d7da86ad9c45f14b149496f")
("transient" . "d056a6c013b9e7160a676365bcf29905bfe65093")
("treemacs" . "6a6171c6d09522a736f1bb91b7e351aa93d0ac2e")
("treepy.el" . "75fe3ec37e6f9b2bdfd6d0584efd984d0c00a43e")
("ts.el" . "552936017cfdec89f7fc20c254ae6b37c3f22c5b")
("use-package" . "a6e856418d2ebd053b34e0ab2fda328abeba731c")
("vertico" . "353694558a1caffe1d1f8fe3a3eb7a4a9fee7d3a")
("vundo" . "5e917b35a942c7e18044ba8ebddbe98f8e85d818")
("with-editor" . "a4853781835346aabf083d2d9cb87f656d01ccac")
("workgroups.el" . "9572b3492ee09054dc329f64ed846c962b395e39")
("xref" . "420511e20187d0c6c8680c0e63ae8810f84dee00")
("xterm-color" . "2ad407c651e90fff2ea85d17bf074cee2c022912")
("yaml.el" . "ee86566af1ed4975531ab3aa4eb4dba770c227f6")
("yasnippet" . "5cbdbf0d2015540c59ed8ee0fcf4788effdf75b6")
("yasnippet-snippets" . "bec49fa129ae8c0104ba150f9b8352a39c54dbd6"))
:gamma
References:
(mirage-module 'ef-themes)
(setq light-theme 'ef-deuteranopia-light)
(setq dark-theme 'ef-tritanopia-dark)
(mirage-layer 'modeline-moody)
;; default
(set-face-attribute 'default nil :font "Fira Code Retina" :height 93)
;; fixed pitch
(set-face-attribute 'fixed-pitch nil :font "Fira Code Retina" :height 93)
;; variable pitch
(set-face-attribute 'variable-pitch nil :font "PT Sans" :height 105 :weight 'regular)
;; italic
(defface mirage/italic
'((t :font "Victor Mono" :height 86 :weight bold :slant italic))
"Italic typeface")
;; titles
(setq typeface-title "Latin Modern Roman")
;; headings
(setq typeface-heading "Century Gothic")
;; mode line
(set-face-attribute 'mode-line nil :height 85 :inherit 'fixed-pitch)
(mirage-module 'counsel)
(mirage-module 'helpful)
(mirage-module 'which-key)
(mirage-layer 'navigation)
;; text editing
(mirage-layer 'editing)
;; text search
(mirage-layer 'search)
;; snippets
(mirage-module 'yasnippet)
;; auto-completions
(mirage-layer 'completion-vertico)
;; session management
(mirage-layer 'session)
;; project management
(mirage-layer 'project-interaction)
(mirage-layer 'file-management)
(mirage-layer 'ide)
(mirage-layer 'latex)
(mirage-module 'bitacora)
(mirage-layer 'org-agenda)
(mirage-layer 'org-gtd)
;; language
(setq default-input-method 'spanish-prefix)
;; custom link types
(@mirage/org-dir-link "msc1" (concat home "studio/academic/education/TU Delft/MSc/Space Flight/SPF-1/"))
(@mirage/org-dir-link "ta"(concat home "studio/academic/education/TU Delft/_assistantships/"))
;; org-roam capture templates
(setq org-roam-capture-templates
'(("m" "mathematics" plain "%?"
:target (file+head "mathematics/%<%Y%m%d%H%M%S>-${slug}.org"
"#+STARTUP: subtree\n\n\n\n#+title:${title}\n\n\n")
:unnarrowed t)
("c" "control" plain "%?"
:target (file+head "control/%<%Y%m%d%H%M%S>-${slug}.org"
"#+STARTUP: subtree\n\n\n\n#+title:${title}\n\n\n")
:unnarrowed t)))
;; org-agenda setup
(setq org-agenda-hide-tags-regexp
"CW\\|INT\\|THESIS\\|TA\\|BIRTHDAY\\|PERSONAL\\|PROFESSIONAL\\|TRAVEL\\|PEOPLE\\|HOME\\|FINANCE\\|PURCHASES\\|GIFTS")
(setq org-super-agenda-groups
'(;; Each group has an implicit boolean OR operator between its selectors.
(:name "Important"
;; Single arguments given alone
:priority "A")
(:name "Coursework"
;; Single arguments given alone
:tag "CW")
(:name "Internship"
;; Single arguments given alone
:tag "INT")
(:name "Thesis"
;; Single arguments given alone
:tag "THESIS")
(:name "Assistantships"
;; Single arguments given alone
:tag "TA")
(:name "Personal"
;; Single arguments given alone
:tag "PERSONAL")
(:name "Professional"
;; Single arguments given alone
:tag "PROFESSIONAL")
(:name "Travel"
;; Single arguments given alone
:tag "TRAVEL")
(:name "Keeping in touch"
;; Single arguments given alone
:tag "PEOPLE")
(:name "Home"
;; Single arguments given alone
:tag "HOME")
(:name "Medical"
;; Single arguments given alone
:tag "MEDICAL")
(:name "Finance"
;; Single arguments given alone
:tag "FINANCE")
(:name "Purchases"
;; Single arguments given alone
:tag "PURCHASES")
(:name "Gifts"
;; Single arguments given alone
:tag "GIFTS")
(:name "Birthdays"
;; Single arguments given alone
:tag "BIRTHDAY")
(:priority<= "B"
;; Show this section after "Today" and "Important", because
;; their order is unspecified, defaulting to 0. Sections
;; are displayed lowest-number-first.
:order 1)
;; After the last group, the agenda will display items that didn't
;; match any of these groups, with the default order position of 99
))