Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

112 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Unified personal dotfiles for CachyOS (Arch), Bazzite (Fedora/ostree), and macOS.

Managed configs

  • ~/.wezterm.lua or 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/*.md or ~/.config/opencode/agents/*.md (custom agents)
  • ~/.config/gh-dash/config.yml
  • ~/.config/nvim/*
  • ~/.gitconfig

Notes

  • 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 $HOME for cross-platform compatibility.

Git worktree standard

This dotfiles repo standardizes on bare git metadata + nested branch worktrees.

  • Canonical format: <repo>/.bare plus 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>

Installation

Prerequisites

⚠️ fastfetch is 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

CachyOS (Arch-based)

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

Bazzite (Fedora/ostree)

# 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

macOS

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

Clone

git clone https://github.com/StuartStephens/dotfiles.git ~/.dotfiles

Symlinking

After 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/shells first if not already present:

echo $(which xonsh) | sudo tee -a /etc/shells

macOS Work Profile Setup

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
EOF

Now personal projects use personal SSH key, work projects use work SSH key automatically.

About

dotfiles for PDE

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages