Radian: dotfiles that marry elegance and practicality.
These dotfiles attempt to achieve the following goals:
If you are a fan of my Emacs packages (such as
straight.el
, el-patch
, ~Selectrum~
(replaced by Vertico), CTRLF, prescient.el
,
Apheleia, Blackout) then you will find all of them configured
here.
Note that there is a main
branch which is not updated as frequently.
You may be interested in running this branch if you desire more
stability.
straight.el
use-package
prescient.el
lsp-mode
(Bash, C, C++, CSS, Flow, Go,
Haskell, HTML, JavaScript, TypeScript, JSX/TSX, Flow,
LaTeX, Python with Poetry and Pipenv virtualenvs
autodetected)el-patch
to lazy-load packages
that weren't designed to be lazy-loaded; by extensive use of idle
timers; by disabling of heavy autoloads; by asynchronous
byte-compilation of the init-file in a subprocess on successful
init, with the local init-file macroexpanded and embedded directly
into Radian during compilation; and by running all customizations
before the first graphical frame is initialized)el-patch
find-function
C-x C-c
, based
partly on restart-emacs
git-gutter-fringe.el
,
git-link, Helpful, Macrostep, Magit, no-littering,
Org, Projectile, pyvenv, rg.el
, Smartparens,
transpose-frame, undo-tree, use-package, visual-regexp,
which-key
, and moregit config
git status
, submodules, and moreSetup is in three parts: installing the software, installing the configuration, and optionally installing local configuration.
Emacs: brew install bash python
; brew cask install emacs
;
(optional for improved startup time) brew install watchexec
lsp-mode
documentationZsh:
$ brew install zsh $ echo $(which zsh) | sudo tee -a /etc/shells $ chfn -s $(which zsh)
Tmux: brew install tmux
Git: brew install git
apt install emacs python3
; (optional for improved startup
time) apt install watchexec-cli
lsp-mode
documentationapt install zsh
apt install tmux
apt install git
I use Yay to install AUR packages. If you prefer something different, substitute to taste.
pacman -S emacs python
; (optional for improved startup
time) yay -S watchexec
lsp-mode
documentationpacman -S zsh
pacman -S tmux
pacman -S git
Use symbolic links:
./emacs/init.el => ~/.emacs.d/init.el
./emacs/early-init.el => ~/.emacs.d/early-init.el
./emacs/versions.el => ~/.emacs.d/straight/versions/radian.el
./git/.gitconfig => ~/.gitconfig
./git/.gitexclude => ~/.gitexclude
./shell/shared/.profile => ~/.profile
./shell/zsh/.zshrc => ~/.zshrc
./shell/zsh/.zprofile => ~/.zprofile
./tmux/.tmux.conf => ~/.tmux.conf
Do not attempt to use the emacs
subdirectory of this repository as
user-emacs-directory
; it won't work.
~/.emacs.d/init.local.el
(local configuration) and
~/.emacs.d/straight/versions/radian-local.el
(optional, local
lockfile for straight.el
; will be created when you run M-x straight-freeze-versions
)~/.profile.local
~/.zshrc.local
~/.tmux.local.conf
~/.gitconfig.local
I suggest versioning your local dotfiles in a separate repository, and symlinking them to the appropriate locations. This is what I do.
Here is what your init.local.el
should probably look like:
;; code that should be run at the very beginning of init, e.g.
(setq radian-font ...)
(setq radian-font-size ...)
(radian-local-on-hook before-straight
;; code that should be run right before straight.el is bootstrapped,
;; e.g.
(setq straight-vc-git-default-protocol ...)
(setq straight-check-for-modifications ...))
(radian-local-on-hook after-init
;; code that should be run at the end of init, e.g.
(use-package ...))
;; see M-x customize-group RET radian-hooks RET for which hooks you
;; can use with `radian-local-on-hook'
You don't have to worry about byte-compiling your local init-file;
Radian actually macroexpands it and embeds it directly into the
byte-compiled Radian init-file. Using the macro radian-local-on-hook
instead of defining functions and adding them to Radian's hooks
manually enables some magic that makes this actually work properly.
There is some very incomplete documentation here.
Please feel free to contribute in any way that you would like. If you find a bug or have a question about how to use Radian, report it. If you want to contribute code, please do. (Try to follow the style of the surrounding code.)
Please do! It will probably be informative in one way or another. The goal is that absolutely everything should be either obvious or commented.