A comprehensive, cross-platform dotfiles management system using Chezmoi. This repository provides automated setup and configuration for development environments across macOS, Linux (Debian/Ubuntu, Fedora/RHEL, Arch/Manjaro), with consistent tooling and shell configuration.
- Cross-Platform Support: macOS, Debian, Ubuntu, Fedora, RHEL, Arch, and Manjaro
- Automated Bootstrap: One-command installation script for fresh systems
- Package Management: Automatic installation of essential development tools
- Shell Configuration: Enhanced ZSH setup with Antigen plugin manager
- Modern CLI Tools: eza, bat, fzf, ripgrep, neovim, and more
- Consistent Themes: Tokyo Night color scheme across all applications
- SSH Management: Integrated 1Password SSH agent support
- Version Control: Chezmoi-powered dotfile management with Git
- Internet connection for downloading packages and repositories
- curl or wget (at least one must be installed)
- sudo privileges for system package installation
- Git (will be installed by bootstrap if missing)
Run this single command to set up everything automatically:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/norville/dotfiles/main/dot_config/bdb/bdb_bootstrap.sh)"Or with wget:
bash -c "$(wget -qO- https://raw.githubusercontent.com/norville/dotfiles/main/dot_config/bdb/bdb_bootstrap.sh)"Alternative: Download and run locally:
curl -fsSL https://raw.githubusercontent.com/norville/dotfiles/main/dot_config/bdb/bdb_bootstrap.sh -o bdb_bootstrap.sh
chmod +x bdb_bootstrap.sh
./bdb_bootstrap.shThe bootstrap script will:
- Detect your operating system
- Install Chezmoi and dependencies
- Prompt to update your system
- Clone this dotfiles repository
- Apply all configurations automatically
If you prefer manual control:
# Install chezmoi
sh -c "$(curl -fsLS get.chezmoi.io)"
# Initialize and apply dotfiles
chezmoi init --apply norville| File | Description |
|---|---|
chezmoi.toml.tmpl |
Chezmoi configuration with OS detection, template variables, and hooks |
.chezmoiignore |
Files to exclude from installation based on OS/platform |
.chezmoiexternal.toml.tmpl |
External resources (themes, fonts) to download and manage |
| File | Description |
|---|---|
bdb_bootstrap.sh |
Main bootstrap script for fresh system setup |
bdb_helpers.sh |
Helper functions for colored output, user prompts, and error handling |
These scripts run automatically during chezmoi apply:
| File | Description |
|---|---|
run_onchange_after_00-required-packages.sh.tmpl |
Installs essential packages (git, zsh, neovim, bat, eza, fzf, etc.) |
run_onchange_after_01-optional-packages.sh.tmpl |
Prompts for optional packages (1Password, Docker, VS Code, Ansible) |
run_onchange_after_02-env-setup.sh.tmpl |
Configures shell, themes, and application settings |
run_after_update_env.sh.tmpl |
Updates packages and tools after chezmoi update |
| File | Description |
|---|---|
.zshrc |
Main ZSH configuration with XDG compliance, Homebrew setup, and plugin loading |
antigen.zsh |
Antigen plugin manager configuration with auto-installation |
aliases.zsh |
Shell aliases for modern CLI tools and convenience shortcuts |
| Directory | Description |
|---|---|
.config/bat/ |
Bat (syntax highlighter) configuration and themes |
.config/eza/ |
Eza (modern ls) color theme configuration |
.config/btop/ |
Btop (system monitor) theme configuration |
.config/kitty/ |
Kitty terminal emulator configuration |
.config/nvim/ |
Neovim editor configuration |
.config/starship/ |
Starship prompt configuration |
.config/homebrew/ |
Homebrew bundle file (macOS only) |
- Shell: ZSH with Antigen plugin manager
- Editor: Neovim with modern configuration
- Terminal: Kitty (GPU-accelerated)
- Prompt: Starship (cross-shell prompt)
- Version Control: Git with enhanced configuration
| Traditional | Modern Alternative | Description |
|---|---|---|
ls |
eza |
Modern ls with colors and git integration |
cat |
bat |
Syntax highlighting and line numbers |
find |
fd |
Fast and user-friendly file finder |
grep |
ripgrep |
Extremely fast recursive search |
top |
btop |
Beautiful system monitor |
man |
batman |
Man pages with syntax highlighting |
- lazygit: Terminal UI for Git operations
- fzf: Fuzzy finder for files, history, and more
- tree-sitter: Parser generator for syntax highlighting
- 1Password: Password manager with SSH agent
- Docker: Container platform
- Visual Studio Code: Modern code editor
- Ansible: IT automation platform
All applications use the Tokyo Night Moon color scheme for consistency:
- Bat syntax highlighting
- Eza file listing colors
- Btop system monitor theme
- Terminal color schemes
- Neovim editor theme
The dotfiles automatically detect and use the appropriate package manager:
| OS/Distribution | Package Manager |
|---|---|
| macOS | Homebrew |
| Debian/Ubuntu | APT + Snap |
| Fedora/RHEL | DNF + Flatpak |
| Arch/Manjaro | Pacman + AUR (yay) |
chezmoi updateThis will:
- Pull the latest changes from the repository
- Apply any configuration updates
- Run the environment update script
- Update system packages
- Update ZSH plugins
- Update Neovim plugins
- Rebuild application caches
chezmoi apply# macOS
brew update && brew upgrade
# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y
# Fedora/RHEL
sudo dnf upgrade -y
# Arch/Manjaro
sudo pacman -SyuCreate local configuration files that won't be tracked:
# Local ZSH configuration
touch ~/.zsh/aliases.local
touch ~/.zsh_plugins.local
# Local Chezmoi plugins
touch ~/.chezmoiscripts/local/# Edit a managed file
chezmoi edit ~/.zshrc
# Apply changes
chezmoi apply# Add a new file to be managed
chezmoi add ~/.config/myapp/config.yml
# Commit changes
cd $(chezmoi source-path)
git add .
git commit -m "Add myapp configuration"
git push# Show what would change
chezmoi diff
# Apply changes
chezmoi apply
# Update from repository
chezmoi update
# Edit configuration
chezmoi edit ~/.zshrc
# Show managed files
chezmoi managed
# Remove a file from management
chezmoi forget ~/.config/file
# Re-add a file
chezmoi re-add ~/.zshrcThe dotfiles include custom helper functions:
# Update all plugins and packages
zsh-update-plugins
# List loaded plugins
zsh-list-plugins
# Clean plugin cache
zsh-clean-plugins
# Edit plugin list
zsh-edit-pluginsIf the bootstrap script fails:
- Check internet connection
- Ensure curl or wget is installed
- Verify sudo privileges
- Check the log file:
bdb_log_YYYYMMDD_HHMMSS.txt
# Verify chezmoi installation
chezmoi doctor
# Rebuild from scratch
chezmoi init --apply --force norville
# Check for conflicts
chezmoi verify# Manually update plugins
cd ~/.local/share/antigen && git pull
antigen update# Rebuild font cache
fc-cache -fv
# Verify font installation
fc-list | grep "JetBrainsMono Nerd Font"This repository is provided as-is for personal use. Feel free to fork and customize for your own needs.
This is a personal dotfiles repository, but suggestions and improvements are welcome! Feel free to open an issue or submit a pull request.
- Built with Chezmoi for dotfile management
- Powered by Antigen for ZSH plugins
- Themed with Tokyo Night
- Inspired by the dotfiles community
Repository: https://github.com/norville/dotfiles Author: Norville Contact: ing.norville@protonmail.com