Dotfiles
Configuration for keeping sharp knives! Feel free to reach out about anything in here. I hope to document enough here to make this repo somewhat accessible, and to share some current opinions on dev productivity tools.
These files are configured with stow
, which handles symlinking, and constrains
the directory structure of this repo. See `Stow-based Dotfiles` below.
Emacs
Via Doom Emacs. See emacs/.doom.d/*
.
Quick links:
- Doom modules: .doom.d/init.el
- Main config: .doom.d/config.el
- Packages: .doom.d/packages.el
- Keybindings: .doom.d/+bindings.el
- Hydra: .doom.d/+hydra.el
- Org: .doom.d/+org-custom.el
- Langs: .doom.d/+langs.el
I hope to install cheemacs soon to start in on a vanilla configuration, but I don’t expect any dev experience to beat Doom’s ecosystem any time soon.
AwesomeWM
This fennel-based awesome config is no longer in use - I ported everything into
russmatney/clawe
where my awesomeWM usage is now clojure based.
Sxhkd
I use sxhkd for keybindings that don’t touch awesomeWM. Similar to the Awm stuff, this is mostly configured via clawe.
These commands fire in a persisted tmux session, which helps debugging and eases some of the env requirements (b/c we’re firing in a true zsh session.)
Tmux
Tmux allows terminal sessions to persist after Alacritty (or whatever terminal program) is closed/re-opened.
Zsh
Plugins are handled via antibody.
Neovim
Recently I’m poking around in neovim a bit, out of curiousity. Things are farther along since I was last a full-time vim user, including lua (and fennel) support, and misc ui-improvements. Maybe Neovim can rival normal emacs usage someday!
At this point, this is all configured via `cheovim`, which supports simple moving between neovim configurations.
.local/bin
This dir is used for executables.
Stow-based Dotfiles
These files are structured to take advantage of `GNU Stow` for installation and symlink handling. `stow foo` will create symlinks for everything in the `./foo` directory exactly one relative directory above the current working directory.
To install:
# ~/.zshrc
yay -S stow
This works well for dotfile management - you can create feature-based directories in `~/dotfiles` for things like `zsh`, `vim`, and `emacs`, then call `stow zsh` within `~/dotfiles` to take care of linking it to home (`~/`). Treat your `~/dotfiles/zsh` directory as if it is literally the home directory, i.e. you should have a `~/dotfiles/zsh/.zshrc`. Then, from your dotfiles repo, call `stow zsh`, and that’s it! Everything will have been symlinked properly.
Misc
Enable Hidden Files where relevant
The `stow` style leads to many “hidden” files (dot-prefixed: `emacs/.doom.d/*`, `zsh/.zshrc`, etc) being used, which reveals that many tools ignore hidden files by default.
Zsh fix
# ~/.zshrc
setopt globdots
Rip-grep (emacs) fix
Create `~/.ignore` file with `.git` (so that –hidden does not include .git). See this issue.
$ echo ".git" >> ~/.ignore
Update `rg` command in emacs to use `–hidden` flag:
(setq counsel-rg-base-command
"rg -zS --hidden --no-heading --line-number --color never %s .")
Todos
Planned features/fixes for some of these tools.
Workspace org file
An inbox for ideas and bugs for this repo. (not shared)