Cross-platform dotfiles (macOS, Linux & Windows) managed with Chezmoi, following XDG Base Directory conventions.
# One-line bootstrap on a new machine (~15-20 min)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/kidchenko/dotfiles/v1.0.0/tools/bootstrap.sh)"
# Preview what will be installed (dry-run)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/kidchenko/dotfiles/v1.0.0/tools/bootstrap.sh)" -- --dry-runBootstrap installs essential dev tools only. After bootstrap, install the full software suite:
# Install full software suite (~30-40 min)
dotfiles installTip: Use a tagged release (e.g.,
v1.0.0) for stability. Check releases for the latest version.
| Category | Tools |
|---|---|
| Shell | Zsh + Oh My Zsh, aliases, functions, completions |
| Git | Templated config, delta diff viewer, lazygit |
| Editor | Neovim, VS Code extensions sync |
| Terminal | Tmux, modern CLI tools (lsd, bat, fd, ripgrep, fzf) |
| Secrets | 1Password CLI integration for SSH keys |
| Automation | Weekly Homebrew updates, scheduled backups |
| macOS | System preferences, Dock, Finder optimizations |
After installation, use the dotfiles command to manage everything:
dotfiles help # Show all commands| Command | Description |
|---|---|
dotfiles doctor |
Run health checks on your setup |
dotfiles apply |
Apply pending dotfile changes |
dotfiles update |
Pull and apply latest changes |
dotfiles diff |
Preview pending changes |
dotfiles edit |
Open dotfiles in your editor |
dotfiles status |
Show git status of dotfiles |
| Command | Description |
|---|---|
dotfiles install |
Install full software suite (Brewfile) |
dotfiles cleanup |
List packages not in Brewfile |
dotfiles extensions |
Install VS Code extensions |
| Command | Description |
|---|---|
dotfiles doctor --quick |
Fast health check (skip slow checks) |
dotfiles doctor --fix |
Auto-fix common issues |
dotfiles backup |
Create project backup |
dotfiles backup list |
List available backups |
dotfiles logs |
View cron job logs |
dotfiles cron |
List scheduled tasks |
dotfiles cron setup |
Setup/update cron jobs |
| Command | Description |
|---|---|
dotfiles ssh |
Generate SSH key in 1Password |
dotfiles defaults |
Apply macOS system preferences |
dotfiles bootstrap |
Full bootstrap (for new machines) |
dotfiles destroy |
Remove all dotfiles |
SSH keys are generated directly in 1Password - the private key never touches disk during generation.
# First time setup (generate new SSH key)
op signin # Sign in to 1Password CLI
dotfiles ssh # Generate Ed25519 key in 1Password
# Copy public key to GitHub/GitLab
# On a new machine (restore existing key)
op signin # Sign in to 1Password CLI
chezmoi apply # SSH keys restored automaticallyKeys are stored at op://development/SSH Key/ and restored via Chezmoi templates.
Two cron jobs are set up automatically:
| Schedule | Task | Description |
|---|---|---|
| Monday 9am | cron/update.sh |
Update Homebrew packages |
| Sunday 2am | cron/backup.sh |
Backup projects (keeps 7 days) |
Manage with dotfiles cron and dotfiles logs.
Backups are stored in ~/.local/share/dotfiles/backups/ (XDG-compliant).
dotfiles/
βββ home/ # Chezmoi-managed dotfiles
β βββ dot_config/ # ~/.config files (zsh, nvim, git, etc.)
β βββ dot_zshrc.tmpl # Main shell config
β βββ private_dot_ssh/ # SSH config templates
βββ tools/ # Management scripts
β βββ dotfiles # CLI tool
β βββ bootstrap.sh # One-line installer
β βββ doctor.sh # Health checks
β βββ destroy.sh # Uninstaller
β βββ setup-ssh-keys.sh # SSH key generation
β βββ os_setup/ # OS-specific configs
βββ cron/ # Scheduled tasks
βββ scripts/ # User scripts (backup, etc.)
βββ Brewfile # Homebrew packages
Edit ~/.config/dotfiles/config.yaml to manage npm/pip/dotnet tools:
global_tools:
npm:
- typescript
- prettier
pip:
- httpie
dotnet:
- dotnet-efThen run the installer:
bash tools/install-global-tools.shEdit ~/.config/dotfiles/vscode-extensions.txt (one extension ID per line):
ms-python.python
esbenp.prettier-vscode
Then run:
dotfiles extensionsThe dotfiles defaults command applies developer-friendly macOS settings:
- Fast keyboard repeat, tap-to-click
- Show hidden files, file extensions
- Auto-hide Dock, disable animations
- Screenshots to ~/Documents/Screenshots
- Hot corners (Lock Screen, Mission Control, Launchpad)
Review settings in tools/os_setup/macos-config.sh before running.
When you run bootstrap.sh, it executes in this order:
- Homebrew - Install package manager (macOS)
- Chezmoi - Install dotfiles manager
- Brewfile - Install all packages (includes 1password-cli)
- 1Password - Prompt to sign in for secrets
- SSH Keys - Generate or restore from 1Password
- Dotfiles - Apply all configurations
- Oh My Zsh - Install shell framework
- Plugins - Install zsh-autosuggestions, zsh-syntax-highlighting, zsh-nvm
- Cron - Setup scheduled tasks
- CLI - Install
dotfilescommand
# Remove managed dotfiles only
dotfiles destroy
# Remove dotfiles + chezmoi state + brew packages
dotfiles destroy --all
# Factory reset (removes dev tools, caches, histories)
dotfiles destroy --deep| Guide | Description |
|---|---|
| Installation | Prerequisites, bootstrap options, troubleshooting |
| Customization | Fork setup, templating, adding packages |
| Structure | Repository layout, XDG paths, key files |
| Commands | Full CLI reference (one page per command) |
Built with care by @kidchenko