A CLI tool to manage your personal dotfiles and development environment setup with an interactive terminal UI.
- π§ Interactive Tool Selection - Choose exactly what you want to install
- π Installation Status Tracking - See what's installed and what's not
- π Dry-run Mode - Preview installations safely before executing
- βοΈ Configuration Management - Validate and manage your settings
- π Update & Rollback - Keep your dotfiles current
- π‘οΈ Error Handling - Robust error recovery and reporting
# One-liner install script (detects your OS/architecture)
curl -fsSL https://raw.githubusercontent.com/pablobfonseca/dotfiles-installer/main/install.sh | bash# Download the latest release for macOS (Intel)
curl -L -o dotfiles https://github.com/pablobfonseca/dotfiles-installer/releases/latest/download/dotfiles-darwin-amd64
# Make it executable
chmod +x dotfiles
# Move to your PATH (optional)
sudo mv dotfiles /usr/local/bin/Available architectures:
- macOS Intel:
dotfiles-darwin-amd64 - macOS Apple Silicon:
dotfiles-darwin-arm64 - Linux x86_64:
dotfiles-linux-amd64 - Linux ARM64:
dotfiles-linux-arm64
# Clone the repository
git clone https://github.com/pablobfonseca/dotfiles-installer.git
cd dotfiles-installer
# Build the binary
go build -o dotfiles
# Or use make
make build# Show help and all available commands
dotfiles --help
# Interactive installation with tool selection
dotfiles install --interactive
# List all available tools and their status
dotfiles list
# Preview what would be installed (safe mode)
dotfiles install --dry-run
# Check installation status
dotfiles status
# Show current configuration
dotfiles config
# Update your dotfiles
dotfiles update --brew- macOS: No additional dependencies required
- Linux: Requires
curlfor downloading - PATH: The installer automatically tries to install to
/usr/local/binwhich should be in your PATH - Permissions: May require
sudofor system-wide installation
After installation, run the setup:
# First time setup with interactive tool selection
dotfiles install --interactive
# Or install everything at once
dotfiles install- Homebrew - Package manager for macOS
- Neovim - Modern Vim-based text editor with config
- Zsh - Z shell configuration files (.zshrc, .zprofile, .zlogin)
- Git - Git configuration files (.gitconfig, .gitignore, etc.)
- Tmux - Terminal multiplexer configuration
- Starship - Cross-shell prompt configuration
- Wezterm - GPU-accelerated terminal emulator
- Karabiner-Elements - Keyboard customization tool
- Aerospace - Window manager for macOS
| Command | Description | Example |
|---|---|---|
install |
Install dotfiles (interactive or all) | dotfiles install --interactive |
list |
Show available tools and status | dotfiles list |
status |
Check installation status | dotfiles status |
config |
Show configuration settings | dotfiles config |
update |
Update repository and packages | dotfiles update --brew |
uninstall |
Remove dotfiles | dotfiles uninstall |
--interactive, -i- Interactive installation with tool selection--dry-run, -n- Preview mode (show what would be done)--config- Specify custom config file--brew- Also update Homebrew packages (for update command)
The tool uses a TOML configuration file located at ~/.config/dotfiles/config.toml:
[dotfiles]
repository = "pablobfonseca/dotfiles"
default_dir = "/Users/yourusername/.dotfiles"On first run, you'll be prompted to configure:
- Repository: Your GitHub dotfiles repository (format:
username/repository) - Directory: Where to clone your dotfiles (e.g.,
~/.dotfiles)
π Select Tools to Install
β― βοΈ π¦ Homebrew
β π¦ Neovim
β π¦ Zsh
β π¦ Git Config
Modern terminal-based package manager for macOS
β’ space: toggle selection β’ a: select all β’ enter: install β’ q: quit
π Dotfiles Installation Progress
ββββββββββββββββββββββββββββββββββββββββββ 100%
β
Setting up repository
β
Installing Homebrew
β
Setting up Zsh configuration
β
Installing configuration files
βοΈ Finalizing installation...
β
Working... (4/5 steps completed)
dotfiles-installer/
βββ cmd/ # CLI commands
β βββ install.go # Install command with TUI
β βββ list.go # List available tools
β βββ status.go # Show status
β βββ config.go # Configuration management
β βββ update.go # Update functionality
βββ src/
β βββ config/ # Configuration management
β βββ installer/ # Installation logic
β βββ ui/ # Terminal UI components
β βββ utils/ # Utility functions
βββ main.go
# Build for current platform
go build -o dotfiles
# Build for release
make build
# Run tests
go test ./...
# Clean build artifacts
make cleanPre-built binaries are automatically created for each release and available on the GitHub Releases page.
Supported platforms:
- macOS (Intel & Apple Silicon)
- Linux (x86_64 & ARM64)
Release artifacts:
dotfiles-darwin-amd64- macOS Inteldotfiles-darwin-arm64- macOS Apple Silicondotfiles-linux-amd64- Linux x86_64dotfiles-linux-arm64- Linux ARM64
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ and Go | Personal dotfiles: pablobfonseca/dotfiles