To install:
git clone https://github.com/alexander-turner/.dotfiles ~/.dotfiles && cd ~/.dotfiles && bash setup.shsetup.sh will (with warning) overwrite your existing .bashrc, .vimrc, .gitconfig, tmux.config, .config/nvim, and fish configurations, so back them up first if you want to retain their contents. The new files will be symlinked to the files in the repository, so edits to the originals are reflected immediately.
You can also run bash setup.sh --link-only to refresh symlinks without reinstalling packages.
Features (configurable by changing setup.sh):
-
Installs
fishshell and sets it as the default shell.fishhas autocomplete, syntax highlighting, and indicates when a command is invalid. -
Also installs a cool
fishtheme,tide:
-
Installs
autojumpfor quick directory navigation. Once you've been to directorydir, just hitj dirto go back there. -
Installs
neovimand sets it as default editor. Furthermore, sets upLazynvim, which is basically a full-fledged IDE.
-
Installs a bunch of nice shortcuts, including
gitaliases (e.g.git add->ga). -
Overrides
rmin favor of the reversibletp(trash-put) command. No more accidentally permanently deleting crucial files! -
Installs
tmuxwith thetmux-restoreandtmux-continuumplugins. Basically, this means that yourtmuxsessions will be saved and restored automatically. No more losing your work when your computer crashes! -
Installs
AutoRaise, which automatically focuses the window under the cursor (after a delay). -
Automatically uses
moshinstead ofssh.moshis a more robust version ofsshwhich can handle network changes and disconnections more gracefully. It generally presents a lower-latency user experience. -
Installs
envchainfor secure secret management via OS keychain. Store API keys and credentials hardware-encrypted instead of in plaintext config files. -
Configures open source AI-powered development tools:
- Automatic commit message generation,
- Local LLM support with Ollama and Open WebUI,
- Aider for CLI coding,
- VSCodium with Roo Cline extension for privacy-first AI pair programming (use also with confidential cloud computing, like via
redpill.ai), wutcommand to explain shell output.
-
Most importantly, the
goosesaycommand. A variant on the classiccowsay(which renders text inside a cow's speech bubble),goosesaygoosens up your terminal just the right amount. For example:
echo "Never gonna give you up" | goosesay
_________________________
< Never gonna give you up >
-------------------------
\
\
\ ___
.´ ""-⹁
_.-´) e _ '⹁
'-===.<_.-´ '⹁ \
\ \
; \
; \ _
| '⹁__..--"" ""-._ _.´)
/ ""-´ _>
: -´/
; .__< __)
\ '._ .__.-' .-´
'⹁_ '-⹁__.-´ /
'-⹁__/ ⹁ _.´
____< /'⹁__/_.""
.´.----´ | |
.´ / | |
´´-/ ___| ;
<_ /
`.'´
This script creates ~/.extras.fish and ~/.extras.bash, which are automatically sourced by config.fish and .bashrc. These files are not tracked by version control --- include commands you only want for the current machine, but use envchain for secret management.
Secure secret management with envchain
- Hardware-encrypted via MacOS Secure Enclave or Linux gnome-keyring
- No plaintext secrets in config files or git repositories
- Auto-unlocks with your OS (low friction)
envchain --set ai OPENAI_API_KEY
envchain --set ai ANTHROPIC_API_KEY
envchain --set cloudflare CLOUDFLARE_API_TOKENYou'll need to wrap commands with the keys you want to grant access to.
# Granular access to specific keys
function run_push_checks
set -l service_keys DEEPSOURCE_DSN LOST_PIXEL_PROJECT_ID LOST_PIXEL_API_KEY
envchain services $service_keys -- python ~/Downloads/TurnTrout.com/scripts/run_push_checks.py $argv
endmac_brew.txt contains a list of programs which I like using on my personal Mac. To install these, use fish bin/install_apps.fish.
- To disable parenthesis matching in
nvim, delete themini.pairsplugin from~/.local/share/nvim/lazy/LazyVim/lua/azyvim/plugins/coding.lua.
