Opinionated garbage for my dotfiles setup. Uses yadm to manage them in your home.
Used daily by a few people at this point. Lord Zulu help them.
I've been trying to at least put the most useful pieces into gists or their own repos, on an as time allots kind of deal.
A lot of what's here is pure hackery at best, but a lot took some time too. Due to this, I don't promise that everything is exactly documented, but I do promise good things to those who read. If something sucks, tell me why! I don't mind strong opinions; especially so if they have backing data.
Yolo swag.
We've been doing a mass non-opinionation as others have started to utilize these as well. This is being done on pure best effort, and PRs are welcome for just about anything.
- Primarily
Linux
, butOSX
is also targetted, ie nothing should break.- This is true even in the case of osx's insane
PATH
order enforcement; which this works around inzshenv
.
- This is true even in the case of osx's insane
- Relatively easy to understand, with bells and whistles galore.
- Attempts to adhere to XDG spec (for the important tidbits at least).
- Everything should be a plugin (batteries included, but removable).
- Obviously opinionated portions should not be enabled by default.
- Plugins should check for requirements and disable themselves automagically if not available.
-
SSH
: If you're remote, prefix prompt with$HOSTNAME
. -
Linux
: libtrash used if available forrm
, otherwise supports such things as [gomi], [safe-rm], etc -
colorcat
is acat
drop-in wrapper that automatically applies highlighting to the output without breaking usage.- Breakage is avoided by paying attention to if you have a tty, have stdin, are interactive, etc etc
- If used on multiple files, it will even prefix each file with it's name (to stderr only just in case)
-
antibody as a lightweight shim for parallel plugin loads/updates.
- Note: I currently use my fork because I have breaking changes that still haven't integrated
-
airline/promptline based prompts (but totally configurable to whatever you want)
-
A zillion other tools, mostly that I've written, some modified.
-
Nearly everything supports local extension via
~/.local/zsh/
; analogous to~/.config/zsh
here, but local to your machine. This of course includes plugins, functions, and completions. Same idea goes for a lot of this, eg user bin (~/.local/{s,}bin
take precedence over~/{s,bin}
), manpath's, etc. -
Lots of development environment support.
-
Defaults aim to work for most, but all paths should be overridable to taste via env vars.
-
Plugins don't load if their requirements are not met.
-
Smart completion caching for slow-to-export completion functions.
This is for applications that have this god awful idea that I want to execute them each time I load my shell.
If the binary has updated since the cache was created however, the cache is busted.
By avoiding this, shell startup is lightning quick, but your bells and whistles still intact, even on extremely low powered embedded devices, which I use these on all the time ;)
Shame list includes
pip*
and nearly every app written in golang.
Paths to browse:
bin/
bin/3p
: Mostly automagic source code compilation and installation.bin/up
: Update everything, yo.
.config/zsh/{zprofile,zshenv,zshrc}
: Primary entrypoints. Sets up environment and loads plugins..config/zsh/zshplugins
: States what plugins should load..config/zsh/plugins*/
: Isolated zsh plugin bundles.
- Primarily meant for Neovim, but also usable with vim8 for those times you may need it.
- With stock vim builds (including
MacVim
,gvim
), some degradation of functionality is there, but namely it shouldn't break. - When on vim8 instead, neovim remote plugin support is somewhat supported thanks to a shim from the guy who wrote
vim-completion-manager
. Better than nothing. YMMV.
- With stock vim builds (including
- Supports most GUIs such as
nvim-qt
orpynvim
with simple hooks for when you need them to deviate from the cli. - vim-plug for plugin management; check
.config/nvim/plugins.d/
Paths to browse:
.config/nvim/
: Neovim configuration, but also is used in vim8.
tmux configuration:
SSH
: If you're remote; auto-spawns tmux session.- tpm for plugins
Paths to browse:
.config/tmux/
: Tmux configuration
- Install (using yadm, which is effectively just a dope wrapper around git):
case "${OSTYPE:?}" in
linux*) sudo apt install -y yadm ;;
darwin*) brew install yadm ;;
esac
- Clone:
yadm clone --bootstrap 'git@github.com:akatrevorjay/dotfiles.git'
- Yolo
sweg sweg sweg sweg