Modern, cross-platform dotfile management using chezmoi for rapid machine provisioning.
One command. Fresh machine. Ready in 10 minutes. ⚡
iwr -useb https://raw.githubusercontent.com/Randallsm83/dotfiles/main/bootstrap.ps1 | iexIf you have a scoop export from a previous machine:
# 1. Install scoop
irm get.scoop.sh | iex
# 2. Import all packages (buckets + apps in one shot)
scoop import .\scoop-export.json
# 3. Apply configs
chezmoi init --apply Randallsm83/dotfilesOr use the bootstrap script with -ScoopExport:
iwr -useb https://raw.githubusercontent.com/Randallsm83/dotfiles/main/bootstrap.ps1 -OutFile bootstrap.ps1
.\bootstrap.ps1 -ScoopExport .\scoop-export.jsonTip: After setup, chezmoi keeps
~/.config/scoop/scoop-export.jsonin sync with your feature flags — always ready for next time.
curl -fsSL https://raw.githubusercontent.com/Randallsm83/dotfiles/main/setup.sh | bashThis single command will:
- Install chezmoi (via scoop/mise)
- Clone this repository
- Apply all configurations (with platform-specific templates)
- Install package managers (scoop/mise if missing)
- Configure shell environments
- Set up 1Password SSH agent integration
- Ready to work 🎉
- Editors: Neovim (LazyVim-based config)
- Terminals: WezTerm, Windows Terminal (Windows), Warp
- Shell: Zsh (Unix), PowerShell 7+ (Windows)
- Prompt: Starship with custom onedark theme
- Version Control: Git with 1Password SSH agent
- CLI Tools: bat, eza, fzf, ripgrep, fd, delta, vivid, direnv, wget
- Languages: Managed by mise (node, python, ruby, go, rust, lua, bun)
Languages and tools are controlled by feature flags in .chezmoidata.yaml:
| Package | Default | Description |
|---|---|---|
rust |
✅ Enabled | Cargo, rustup, completions |
golang |
✅ Enabled | Go environment setup |
python |
✅ Enabled | Python environment variables |
ruby |
✅ Enabled | Ruby environment |
lua |
✅ Enabled | Lua environment |
node |
✅ Enabled | Node.js environment |
glow |
✅ Enabled | Markdown viewer |
vivid |
✅ Enabled | LS_COLORS generator (follows theme setting) |
sqlite3 |
✅ Enabled | SQLite CLI config |
warp |
✅ Enabled | Warp terminal configurations |
vim |
✅ Enabled | Vim config |
thefuck |
✅ Enabled | Command correction tool |
perl |
✅ Enabled | Perl environment |
tinted_theming |
❌ Disabled | Base16/Base24 theme manager (replaced by unified theme system) |
php |
❌ Disabled | PHP environment |
arduino |
❌ Disabled | Arduino IDE config |
Total managed files: 155+ configurations
Unified Theme System: All apps use a single theme setting in .chezmoidata.yaml.
- Active Theme: Set via
theme.namein.chezmoidata.yaml(default:spaceduck) - Available Themes: spaceduck, onedark, gruvbox-material, tokyonight, tokyonight-storm, dracula, kanagawa
- Apps Using Theme: neovim, wezterm, starship, eza, vivid (LS_COLORS), bat, delta
- Fonts: Hack Nerd Font (primary), FiraCode Nerd Font (fallback with ligatures)
To change theme:
# .chezmoidata.yaml
theme:
name: "onedark" # Change this, run chezmoi applyFor development or testing without running the bootstrap:
# Windows
scoop install chezmoi
# Unix/Linux
sh -c "$(curl -fsLS get.chezmoi.io)"chezmoi init --apply Randallsm83/dotfiles# See what would change
chezmoi diff
# Apply changes
chezmoi apply
# Update from repository
chezmoi updateEdit .chezmoidata.yaml (chezmoi source directory):
package_features:
rust: true # Enable rust
python: false # Disable pythonThen apply:
chezmoi applyConfigs automatically adapt to your platform:
- Windows: PowerShell profile, Windows Terminal settings, WSL config
- Unix/Linux: Zsh config, shell integrations
- WSL: Special detection and configuration
- macOS: Homebrew integration (if needed)
- Windows: Scoop (CLI tools), Winget (GUI apps), Mise (language runtimes)
- Linux/WSL/macOS: Mise (everything via cargo + runtimes)
Package lists are in .chezmoidata.yaml under packages.scoop, winget_packages, mise_runtimes.
.local/share/dotfiles/ # Chezmoi source directory
├── .chezmoi.toml.tmpl # Chezmoi configuration
├── .chezmoidata.yaml # Template variables & feature flags
├── .chezmoiignore # Platform & package exclusions
├── .chezmoiscripts/ # Auto-run installation scripts
├── .chezmoitemplates/ # Reusable template snippets
│
├── dot_config/ # XDG config files
│ ├── git/ # Git configuration
│ ├── nvim/ # Neovim configuration
│ ├── wezterm/ # WezTerm terminal
│ ├── starship/ # Starship prompt
│ ├── mise/ # Mise version manager
│ ├── zsh/ # Zsh configuration
│ └── [language packages] # Language-specific configs
│
├── Documents/PowerShell/ # PowerShell profile (Windows)
├── AppData/Roaming/Code/ # VS Code settings (Windows)
├── dot_local/bin/ # Local scripts
├── dot_cache/zsh/ # Zsh completions
│
├── bootstrap.ps1 # Windows bootstrap script
├── setup.sh # Unix bootstrap script
└── README.md # This file
# Pull latest changes and apply
chezmoi update# Edit in chezmoi source
chezmoi edit ~/.config/nvim/init.lua
# Or edit and apply immediately
chezmoi edit --apply ~/.gitconfig# Add existing file to chezmoi
chezmoi add ~/.config/myapp/config.yml
# Add as template (for platform-specific content)
chezmoi add --template ~/.config/myapp/config.yml# List all managed files
chezmoi managed
# Count managed files
chezmoi managed | wc -l# See what would change (safe)
chezmoi diff
# Dry-run apply
chezmoi apply --dry-run --verboseSSH keys are managed by 1Password SSH agent:
- Windows: Named pipe (
\\.\pipe\openssh-ssh-agent) - Unix: Socket (
~/.1password/agent.sock)
Git is configured to use 1Password for SSH authentication automatically.
- Install 1Password 8+
- Enable SSH agent in settings
- Add SSH keys to 1Password
- Configs automatically use the agent
Windows Subsystem for Linux is fully supported:
.wslconfigtemplate for WSL2 settings- Automatic WSL detection in configs
- 1Password SSH agent integration via npipe
- Zsh as default shell with full config
This repository replaces the old GNU Stow-based dotfiles with modern chezmoi:
Improvements:
- ✅ One-command provisioning
- ✅ Template-based platform detection
- ✅ Feature flags for optional packages
- ✅ Integrated bootstrap scripts
- ✅ Built-in secrets management
- ✅ ~5-10 minute setup (vs 30-60 minutes)
Old repository: Stow-based (deprecated)
New repository: This one (Randallsm83/dotfiles)
- Chezmoi Documentation
- WARP.md - AI agent technical reference (package feature flags, testing, architecture)
This is a personal dotfiles repository, but feel free to:
- Fork for your own use
- Open issues for bugs
- Submit PRs for improvements
MIT License - Feel free to use and modify for your own dotfiles!
Made with ❤️ using chezmoi
Last updated: 2025-01-14
Managed files: 155+
Platforms: Windows, Linux, WSL, macOS