Immutable *GNU Emacs*[fn:1] dotfiles. Built for Life, Liberty, and the Open Road.
Portable *GNU Emacs*[fn:1] dotfiles. Built for Life, Liberty, and the Open Road.
+ 100% Literate
+ 100% Literate
+ 100% Immutable
+ 100% Immutable
@ -46,6 +46,15 @@ To highlight some of the features available out of the box:
3. Loads the host definition file at ~$HOME/.emacs.d/host/$HOSTNAME~
3. Loads the host definition file at ~$HOME/.emacs.d/host/$HOSTNAME~
4. Lodas the enabled modules in ~dotfiles/modules~
4. Lodas the enabled modules in ~dotfiles/modules~
** 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/cleanup.el")
(load-file "~/.emacs.d/bin/packages.el")
#+end_src
** Options
** 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.
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.
@ -116,16 +125,7 @@ Here's a complete list of all of the options configurable for each host, and the
"GPG key to encrypt org files for.")
"GPG key to encrypt org files for.")
#+end_src
#+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 machines
* Hosts machines
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:
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:
@ -142,7 +142,7 @@ This project makes heavy use of modern features and libraries. Since *Babel's* u
(org-babel-load-file host-file)))
(org-babel-load-file host-file)))
#+end_src
#+end_src
** Module directory
* Module directory
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~.
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~.
;; 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/cleanup.el")
(load-file"~/.emacs.d/bin/packages.el")
;; Options
;; 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.
;; 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.
@ -67,14 +75,6 @@
"37AB1CB72B741E478CA026D43025DCBD46F81C0F"
"37AB1CB72B741E478CA026D43025DCBD46F81C0F"
"GPG key to encrypt org files for.")
"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 machines
;; Hosts machines
;; 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:
;; 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: