My daily configs for zsh, starship, Hyprland, waybar, yabai, skhd, JankyBorders, Alacritty, VS Code Insiders, and agent skills.
Works on Arch Linux (my main setup) and macOS. The installer detects your OS and only stows the packages that make sense there — the Hyprland desktop stack (hypr, waybar, wireplumber) and the system audio tweaks are Linux-only, while yabai and skhd provide tiling and hotkeys on macOS. Shell-level differences (clipboard, Android SDK path) are handled inside .zshrc at runtime.
Everything is symlinked into your home via GNU Stow.
On macOS, the installer bootstraps Homebrew when necessary and installs the
tracked formulas and applications from Brewfile. On Arch, you
only need stow (sudo pacman -S stow; the installer can install it).
Then:
./install.shThe script will ask if you want to back up your current configs first (recommended). After that it unstows any existing links, sets up the symlinks, installs editor extensions from extensions/vscode.txt into VS Code Insiders, and (on Linux) reloads Hyprland and waybar if you’re in a Hyprland session.
On macOS, the Brewfile restores the command-line tools and desktop apps, including VS Code Insiders, Ghostty, Chrome, Docker, yabai, and skhd. The installer then starts the window-manager launchd services and configures VS Code Insiders as the default text/code editor. Grant yabai and skhd access in System Settings → Privacy & Security → Accessibility.
Imperative macOS defaults live in system/macos/apply-defaults.sh. The normal
installer runs it automatically, and you can re-apply those settings directly:
./system/macos/apply-defaults.shAll explicitly installed formulas, casks, and taps are tracked in Brewfile.
To refresh it after installing or removing software:
./install.sh --save-brewfileThe normal installation command runs:
brew bundle install --no-upgrade --file=./BrewfileIt installs missing items without upgrading existing packages and does not remove unrelated software.
The tracked yabai setup provides BSP tiling, directional focus and movement, resizing, dynamic Spaces, stacking, sticky/PiP windows, scratchpads, opacity, animations, layers, and layout controls. Its advanced profile uses yabai's scripting addition when System Integrity Protection is partially disabled.
See docs/macos-window-management.md for the complete shortcut reference and troubleshooting commands.
The shared extension list is tracked in:
extensions/vscode.txt
VS Code Insiders installs from this file. When saving the list, the
code-insiders CLI is used.
To refresh it:
./install.sh --save-extensionsTo put a previous backup back (unstow and copy files from backup):
./install.sh --restoreBackups are stored in ~/.dotfiles-backup-YYYYMMDD-HHMMSS. You pick one from the list; the script does the rest and reloads Hyprland/waybar.
- Re-apply everything:
./install.sh - Unstow one package:
stow -t ~ -D <package> - Update editor extension lists:
./install.sh --save-extensions - Update the Homebrew inventory:
./install.sh --save-brewfile