Welcome to my personal configuration files repository!
I am by no means an expert. I am just playing around and enjoying customizing my development environment. These configurations work for me, but please review them before using them on your own system. I am constantly learning and tweaking things, so expect changes!
To use these configurations effectively, you will need the following tools installed on your system. These dotfiles assume a macOS environment, but many configs will work on Linux as well.
Most prerequisites can be installed in one shot via the Brewfile below. The list here is for reference and for things Homebrew can't handle.
- Fish Shell: My primary shell.
- Starship: Cross-shell prompt.
- Ghostty: GPU-accelerated terminal emulator.
- Fisher: Plugin manager for Fish (needed to install plugins listed in
fish_plugins). - eza: A modern, maintained replacement for
ls. - zoxide: A smarter
cdcommand. - fzf: A general-purpose command-line fuzzy finder.
- fortune: A classic Unix toy that prints a random quote, joke, or epigram. I use it to add a bit of personality to the terminal — and as the engine behind
fortune-gca.sh, which uses its output as a commit message.
- Zed: High-performance text editor.
- Bat: A modern replacement for
cat. - Fastfetch: System information fetching tool.
- GitHub CLI (gh): Official GitHub CLI tool.
- gh-dash: Terminal dashboard for GitHub PRs and issues (installed as a
ghextension). - Gemini CLI: For AI interactions.
- Lazydocker: A simple terminal UI for both docker and docker-compose.
- OrbStack: Fast, light, and easy way to run Docker containers and Linux machines on macOS.
- Bun: A fast all-in-one JavaScript runtime.
- Docker purge: A tool created by a mistycal wizard to help me purge my docker cotainers.
- JetBrains Mono Nerd Font: My daily driver. Required for icons in Starship, fastfetch, and the editor configs to render correctly. Installed via the Brewfile (
font-jetbrains-mono-nerd-font).
A Brewfile lives at the root of the repo so a fresh machine can be bootstrapped in one command:
brew bundle install --file=~/dotconf/BrewfileIt pulls in the apps (Ghostty, Zed, OrbStack), the shell stack (fish, starship, bat, eza, fzf, zoxide, fastfetch), the tools used by my scripts (stow, fortune, lazydocker), GitHub tooling (gh + gh-dash), and the JetBrains Mono Nerd Font.
Things that can't go in a Brewfile (Fisher + fish plugins, Bun, Flyctl, the Stylus browser extension, the gh-dash extension itself) are documented as comments at the bottom of the file.
Other useful commands:
brew bundle check --file=~/dotconf/Brewfile # see what's missing
brew bundle cleanup --file=~/dotconf/Brewfile # list installs not in the fileThis repository is structured for use with GNU Stow.
bat/: Configuration forbatfastfetch/: Configuration forfastfetchfish/: Fish shell configuration, functions, and themesgemini/: Configuration for Geminigh/: Configuration for GitHub CLIghostty/: Configuration for Ghosttystarship/: Starship prompt configurationzed/: Zed editor settings and keymaps
- Clone this repository to your dotfiles directory (e.g.,
~/dotconf). - Install the prerequisites with
brew bundle install --file=~/dotconf/Brewfile(see Brewfile). - Use
stowto symlink the configurations to your home directory — the easiest way is thestow-all.shhelper described below.
cd ~/dotconf
./stow-all.sh # restow every package in the repoA handful of small shell scripts live at the root of the repo to make day-to-day life easier.
Wraps GNU Stow so I don't have to call it once per package. By default it runs stow -vR against every top-level directory (skipping hidden ones like .git), which restows everything cleanly.
./stow-all.sh # restow all packages (default: -vR)
./stow-all.sh -D # unstow all packagesApplies a single font family across every config in the repo that cares about fonts (Ghostty, Zed, Stylus). It rewrites the primary font, so you can swap your daily driver in one command.
./set-font.sh "JetBrainsMonoNL Nerd Font Propo"I keep it symlinked into /usr/local/bin/set-font so it's available as a system command:
ln -sf ~/dotconf/set-font.sh /usr/local/bin/set-font
set-font "IBM Plex Mono"Not really meant to be public, but I had too much fun with it to leave it out. It stages every modified file and commits them with a random fortune quote as the message — perfect for the kind of commit that doesn't deserve a thoughtful message. Requires fortune (already in the Brewfile); browse man fortune if you want to swap in a specific cookie file (e.g. fortune computers, fortune -s for short ones).
./fortune-gca.sh
# → git commit -am "$(fortune)"Sample output you might end up committing:
$ fortune
When in doubt, use brute force.
-- Ken Thompson
(Yes, that's a real commit on this repo.)
Enjoy playing around with the configs!