Unified personal dotfiles for CachyOS (Arch), Bazzite (Fedora/ostree), and macOS.
~/.wezterm.luaor Ghostty config~/.config/mimeapps.list~/.xonshrc~/.config/xonsh/rc.xsh~/.config/opencode/opencode.jsonc~/.config/opencode/package.json~/.config/opencode/package-lock.json~/.config/opencode/agent/*.mdor~/.config/opencode/agents/*.md(custom agents)~/.config/gh-dash/config.yml~/.config/nvim/*~/.gitconfig
- Runtime/generated files are intentionally ignored.
- Optional local Git overrides live in
~/.gitconfig.local(not tracked) - used on Mac for work profile switching. - All paths use
$HOMEfor cross-platform compatibility.
This dotfiles repo standardizes on bare git metadata + nested branch worktrees.
- Canonical format:
<repo>/.bareplus worktrees by branch path (main,feature/*,chore/*,fix/*,refactor/*, etc.) - Unreal repos should live under:
$HOME/Projects/Unreal/<Repo>/
Full standard and migration notes:
docs/git-worktree-standard.md
Migration utility:
python3 $HOME/.dotfiles/scripts/git_worktree_migrate.py migrate --repo <repo-root>
python3 $HOME/.dotfiles/scripts/git_worktree_migrate.py validate --repo <repo-root>
⚠️ fastfetchis executed on every interactive xonsh startup in this config. Install it before using these shell files.
Universal Requirements:
- Terminal: ghostty, wezterm, or similar
- Shell: xonsh
- Editor: neovim with Copilot plugin
- Tools: fastfetch, git, nodejs, npm
sudo pacman -S git wezterm neovim fastfetch nodejs npm pipx
pipx install xonsh
# Alternative xonsh install:
yay -S xonsh
# Font used by wezterm/ghostty config:
yay -S ttf-firacode-nerd- Install
opencodeusing the current official instructions from https://opencode.ai
# System packages (layered via rpm-ostree)
rpm-ostree install xonsh neovim npm go python3-neovim
# Ghostty (AppImage or from source)
# Fastfetch (pre-installed on Bazzite)
# Homebrew for additional tools
brew install gh- Install
opencodeusing the current official instructions from https://opencode.ai
brew install wezterm neovim fastfetch git nodejs
brew install --cask font-fira-code-nerd-font
pip3 install xonsh
# For work profile: create ~/.gitconfig.local with includeIf- Install
opencodeusing the current official instructions from https://opencode.ai
git clone https://github.com/StuartStephens/dotfiles.git ~/.dotfilesAfter prerequisites are installed, symlink configs:
# Top-level files
ln -sf ~/.dotfiles/.xonshrc ~/.xonshrc
ln -sf ~/.dotfiles/.gitconfig ~/.gitconfig
ln -sf ~/.dotfiles/.wezterm.lua ~/.wezterm.lua
# Ghostty config
mkdir -p ~/.config/ghostty
ln -sf ~/.dotfiles/.config/ghostty/config ~/.config/ghostty/config
# MIME defaults
ln -sf ~/.dotfiles/.config/mimeapps.list ~/.config/mimeapps.list
# Config directories
ln -sf ~/.dotfiles/.config/nvim ~/.config/nvim
ln -sf ~/.dotfiles/.config/opencode ~/.config/opencode
ln -sf ~/.dotfiles/.config/gh-dash ~/.config/gh-dash
ln -sf ~/.dotfiles/.config/xonsh ~/.config/xonsh
# Install OpenCode plugins
cd ~/.config/opencode && npm install
# Set xonsh as default shell
chsh -s $(which xonsh)Note: On Bazzite/Fedora, you may need to add xonsh to
/etc/shellsfirst if not already present:echo $(which xonsh) | sudo tee -a /etc/shells
On Mac only (for work/personal git profile switching):
# Create ~/.gitconfig.local
cat > ~/.gitconfig.local << 'EOF'
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig.work
EOF
# Create ~/.gitconfig.work
cat > ~/.gitconfig.work << 'EOF'
[user]
name = Stuart Stephens
email = stuart@company.com
signingkey = ~/.ssh/id_ed25519_work.pub
EOFNow personal projects use personal SSH key, work projects use work SSH key automatically.