Files
Obsidian-Vault/Career/Resources/Dotfiles Management.md
2025-11-27 10:50:52 +01:00

1.5 KiB

Dotfiles Management

Decision: YADM

Chosen for cross-platform dotfile management (macOS, Linux, Windows via WSL).

Why YADM over alternatives

Approach Verdict
Git bare repo No tooling for OS-specific configs
GNU Stow No Windows support, symlinks can confuse tools
Chezmoi Requires source dir + apply step, easy to forget
YADM Files in place, just git, alternate files per OS

Key factors

  • Works on Windows through WSL (native Windows not needed)
  • Files stay in place, no copy/apply step
  • Closest to "two-way sync" - just edit and commit
  • Alternate files via naming convention: .zshrc##os.Darwin, .zshrc##os.Linux

Setup

# Install
brew install yadm        # macOS
sudo pacman -S yadm      # Arch
# Windows: use through WSL

# Init new repo
yadm init
yadm remote add origin git@github.com:user/dotfiles.git

# Or clone existing
yadm clone git@github.com:user/dotfiles.git

Workflow

# Edit files normally
vim ~/.zshrc

# Commit when ready
yadm add -u && yadm commit -m "updates" && yadm push

# Quick sync alias
alias yadm-sync='yadm add -u && yadm commit -m "sync $(date +%Y-%m-%d)" && yadm push'

OS-Specific Files

Use alternate files with ## suffix:

~/.zshrc##os.Darwin    # macOS
~/.zshrc##os.Linux     # Linux
~/.zshrc##default      # Fallback

YADM automatically uses the right one based on OS.

#dotfiles #yadm #git #linux #macos #configuration