This repository has undergone a major restructure to use GNU Stow for symlink management with work/personal separation. All existing symlinks from the previous structure will be broken and need to be recreated.
dotfiles/
├── .config/
├── .gitconfig
├── .zshrc
└── ... (all config files in root)
dotfiles/
├── shared/ # Common configurations for all machines
│ ├── .config/ # Application configurations
│ ├── .zshrc # Shell configurations
│ └── ...
├── personal/ # Personal-specific configurations
│ └── .gitconfig # Personal git settings
└── work/ # Work-specific configurations (private submodule)
├── .gitconfig # Work git settings
└── .compassrc # Company-specific tools
First, remove all existing symlinks that are now broken:
cd ~
# Remove broken symlinks (adjust paths as needed based on your setup)
find . -maxdepth 1 -type l -exec ls -la {} \; | grep dotfiles
# Manually remove each broken symlink, for example:
rm ~/.gitconfig ~/.zshrc ~/.tmux.conf
# Remove broken .config symlinks
find ~/.config -type l -exec ls -la {} \; | grep dotfiles
# Remove broken ones manuallyIf you have any local modifications:
mkdir ~/dotfiles-backup-$(date +%Y%m%d)
# Move any existing configs you want to preserve
mv ~/.gitconfig ~/dotfiles-backup-$(date +%Y%m%d)/ 2>/dev/null || true
mv ~/.zshrc ~/dotfiles-backup-$(date +%Y%m%d)/ 2>/dev/null || truecd ~/.dotfiles
git pull origin mainIf you don't have Stow installed:
# macOS
brew install stow
# Ubuntu/Debian
sudo apt install stow
# Arch Linux
sudo pacman -S stowcd ~/.dotfiles
stow shared personalcd ~/.dotfiles
# Initialize work submodule (requires access to private work repo)
git submodule update --init --recursive
stow shared workexec $SHELLIf stow reports conflicts with existing files:
# Backup conflicting files
mkdir ~/dotfiles-backup
mv ~/.gitconfig ~/dotfiles-backup/ # repeat for each conflicting file
# Then retry stow
stow shared personal # or workTo find all broken symlinks in your home directory:
find ~ -type l -exec test ! -e {} \; -print 2>/dev/nullCheck that symlinks are working correctly:
ls -la ~/.gitconfig ~/.zshrc ~/.config/fish/config.fishYou should see symlinks pointing to files in ~/.dotfiles/shared/ or ~/.dotfiles/personal/ (or work/).
- Clean separation between work and personal configurations
- Easy deployment across different machine types
- No complex templating - files are files
- Secure work configs - sensitive data in private submodule
- Simple maintenance - standard GNU Stow workflow
If you encounter issues during migration:
- Check the main README for detailed setup instructions
- Review the shared README for troubleshooting tips
- Ensure you have proper SSH access to GitHub repositories
If you need to quickly rollback to a working state:
cd ~/.dotfiles
# Remove new symlinks
stow -D shared personal # or work
# Restore from backup
cp ~/dotfiles-backup/* ~/Then you can work on fixing the migration issues.