Christopher James Hayward
4cb465423a
|
4 years ago | |
---|---|---|
bin | 4 years ago | |
config | 4 years ago | |
docs | 4 years ago | |
hosts | 4 years ago | |
modules | 4 years ago | |
.gitattributes | 4 years ago | |
.gitignore | 4 years ago | |
.gitmodules | 4 years ago | |
LICENSE | 4 years ago | |
README.org | 4 years ago | |
init.el | 4 years ago |
README.org
Dotfiles
Portable GNU/Emacs1 dotfiles. Built for Life, Liberty, and the Open Road.
-
100% Literate
-
100% Immutable
-
100% Reproducible
Init
This project makes heavy use of modern features and libraries. Since Org-babel2's used during the initialization, Org-mode3 must load prior to importing any custom modules. My solution includes the introduction of some early intitialization code written in Emacs Lisp4.
(load-file "~/.emacs.d/bin/options.el") (load-file "~/.emacs.d/bin/cleanup.el") (load-file "~/.emacs.d/bin/packages.el")
Load host definition
Begin the process by loading any host specific option overrides. The host configuration tangles, and loads (if it exist) using the systems name. If a host definition doesn't exist the default values remain.
(let ((host-file (concat dotfiles/home "/hosts/" system-name ".org"))) (when (file-exists-p host-file) (org-babel-load-file host-file)))
Load enabled modules
All of the modules in dotfiles/modules
load after the host overrides. By default, all of the packages defined in dotfiles/modules-p
load. Override this behaviour in a host configuration file.
(dolist (m dotfiles/modules) (let ((mod-file (concat dotfiles/home "/modules/" (symbol-name m) ".org"))) (when (file-exists-p mod-file) (org-babel-load-file mod-file))))
Hosts
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:
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. Below are details of the modules, and their respective dependencies.
Options
Here's a complete list of all of the options configurable for each host, and their default values.
-
All variables prefixed with
dotfiles/
-
Initialized prior to loading of packages or hosts
Name | Default | Description |
---|---|---|
dotfiles/home | ~/.emacs.d | Original value of `user-emacs-directory'. |
dotfiles/cache | ~/.cache/emacs | Redirection target of `user-emacs-directory'. |
dotfiles/browser | $BROWSER | Default system web browser. |
dotfiles/language | $LANG | Default system dictionary language. |
dotfiles/modules-p | Modules | All of the available modules. |
dotfiles/modules | dotfiles/modules-p | ALl of the enabled modules. |
dotfiles/font | Fira Code | Unified system font family. |
dotfiles/font-size | 96 | Unified system font size. |
dotfiles/idle | 0.0 | Delay time before offering suggestions and completions. |
dotfiles/leader-key | SPC | All powerful leader key. |
dotfiles/leader-key-global | C-(dotfiles/leader-key) | Global prefix for the leader key. |
dotfiles/projects | ~/.local/source | Location of source code projects. |
dotfiles/passwords | ~/.password-store | Location of local password store. |
dotfiles/public-key | My public key | GPG key to encrypt org files for. |