Mirage is a literate, layer-based Emacs configuration framework designed to give you maximal maintainability, extensibility and performance. All in a way you can understand and control from the ground up.
How to use Mirage
Clone this repository to your .emacs.d
. Write your personal configuration in config.org
; all emacs-lisp
source code blocks will be tangled to init.el
every time config.org
is saved.
BOM
Package Manager | Literate Emacs config | Keyboard bindings |
straight.el | config.org (tangled to init.el ) | Emacs + custom bindings |
The Mirage Base Configuration comes with batteries included!
- UI
Clean, minimalistic UI
- Themes
Easily set light and dark themes, easy theme toggling and circadian theme switching between light and dark themes
- A good welcome
Start screen with quick links to recent files, projects, bookmarks, registers and your weekly agenda
- Full fledged Org mode
Ready for literate programming, daily planning with
org-agenda
+org-super-agenda
, code notebooks for any language, your own zettelkasten withorg-roam
and more - Full fledged PDF support
Annotations and highlights you can save directly to the PDF, light and dark mode, text seach and more
- Magit for version control
A highlight of Emacs: version-control with the best Git front-end of them all
The backbone of Mirage, the Mirage Core, consists of the elisp code responsible for the
- Package manager, currently
straight.el
- Config management
- Mirage Base Configuration
Emacs has an expansive package landscape, providing it with wide-ranging functionality. Many packages are complementary, and their configuration non-trivial.
Following the approach of Doom Emacs and SpaceMacs, in Mirage, we combine complementary packages into units called “layers”, each providing a certain set of functionality, for example: PDF handling, LaTeX editing and an Integrated Development Environment.
Layers are composed of:
- Modules: elisp code to install, load and set up an Emacs package.
- Extensions: custom elisp code to add functionality, define custom behaviors, etc.
Loading components:
;; Loading a layer
(mirage-layer 'org)
;; Loading a module
(mirage-module 'org-roam)
;; Loading an extension
(mirage-extend 'org-queries)
Components (layers mostly) marked with TODO in mirage.org
have much room for improvement. For example:
- The Project interaction layer
- The IDE layer
- The LaTeX layer
Adding packages and setting up things is easy within layers! And I would love any help to make these better than they are. If you have a good setup and would like to contribute or give a suggestion you’re more than welcome to! :)