Immutable GNU Emacs dotfiles. Built for Life, Liberty, and the Open Road.
Immutable *GNU Emacs* dotfiles. Built for Life, Liberty, and the Open Road.
+ 100% Literate
+ 100% Immutable
+ 100% Reproducible
* Options
Here's a complete list of all of the options configurable for each host, and their default values. All variables prefixed with ~dotfiles/~. If you need to make configurations to another variable, consider creating a new option.
* Init
Contains all of the options and runs some required pre-configuration code.
** Options
Here's a complete list of all of the options configurable for each host, and their default values. All variables prefixed with ~dotfiles/~. If you need to make configurations to another variable, consider creating a new option.
#+begin_src emacs-lisp
(defvar dotfiles/font
@ -89,9 +93,18 @@ Here's a complete list of all of the options configurable for each host, and the
"GPG key to encrypt org files for.")
#+end_src
** Startup
This project makes heavy use of modern features and libraries. Since *Babel's* used in initialization, *Org* must load prior to importing any of custom modules. This introduces a unique *chicken before the egg* problem. My solution included some initialization code in *Emacs Lisp* called before using any *Babel* APIs.
#+begin_src emacs-lisp
(load-file "~/.emacs.d/bin/startup.el")
(load-file "~/.emacs.d/bin/packages.el")
#+end_src
* Hosts
Each host machines configuration is loaded immediately after the options are declared, before any configuration is applied. This allows system to system control while remaining immutable. Override any of the available options configurations in a host file. Here's some examples to get started:
Each host machines configuration loaded immediately after declaring the options, before applying any configuration. This allows system to system control while remaining immutable. Override any of the available options configurations in a host file. Here's some examples to get started:
+ [[file:hosts/localhost.org][Termux]]
+ [[file:hosts/raspberry.org][Raspberry]]
@ -106,7 +119,7 @@ Here's a complete list of all of the options configurable for each host, and the
(org-babel-load-file host-file)))
#+end_src
** Modules
* Modules
Breaking down the project into logical units or chapters to keep the code more maintainable and organized. This is also a fundamental requirement to achieve the goal of modularity. Here are all of the available modules, also listed in the variable ~dotfiles/modules-p~.
;; Here's a complete list of all of the options configurable for each host, and their default values. All variables prefixed with ~dotfiles/~. If you need to make configurations to another variable, consider creating a new option.
;; Here's a complete list of all of the options configurable for each host, and their default values. All variables prefixed with ~dotfiles/~. If you need to make configurations to another variable, consider creating a new option.
(defvardotfiles/font
@ -67,9 +67,17 @@
"37AB1CB72B741E478CA026D43025DCBD46F81C0F"
"GPG key to encrypt org files for.")
;; Startup
;; This project makes heavy use of modern features and libraries. Since *Babel's* used in initialization, *Org* must load prior to importing any of custom modules. This introduces a unique *chicken before the egg* problem. My solution included some initialization code in *Emacs Lisp* called before using any *Babel* APIs.
(load-file"~/.emacs.d/bin/startup.el")
(load-file"~/.emacs.d/bin/packages.el")
;; Hosts
;; Each host machines configuration is loaded immediately after the options are declared, before any configuration is applied. This allows system to system control while remaining immutable. Override any of the available options configurations in a host file. Here's some examples to get started:
;; Each host machines configuration loaded immediately after declaring the options, before applying any configuration. This allows system to system control while remaining immutable. Override any of the available options configurations in a host file. Here's some examples to get started: