A Ruby-based dotfiles management system that creates symlinks from configuration files in this repository to their expected locations in your home directory.
- Ruby (any recent version)
- Unix-like system (Linux, macOS)
- Write permissions to your home directory
# Install essential shell configuration
./dotfiles.rb essential
# Install multiple packages
./dotfiles.rb git nvim essential
# Force installation (overwrite existing files)
./dotfiles.rb -f essential
# Get help
./dotfiles.rb -hCore shell configuration including:
- bashrc - Enhanced bash configuration with better history, safety aliases, and navigation helpers
- inputrc - Readline configuration for improved command-line editing
- bashrc.d/ - Modular bash configuration directory with toolbox support
Git configuration:
- gitconfig - Global git settings and aliases
Neovim configuration with Lua:
- init.lua - Main Neovim entry point
- lua/ericst/ - Custom Lua configuration modules
- snippets/ - Custom code snippets for various languages
- Includes plugin management via lazy.nvim
Ghostty terminal emulator configuration:
- config - Main Ghostty configuration
- Desktop entries - Application launchers for regular and workbox modes
WezTerm terminal emulator configuration:
- wezterm.lua - Complete WezTerm configuration
AI coding assistant configuration:
- CLAUDE.md - Claude Code configuration and guidelines
- AGENTS.md - OpenCode agent configuration
# Install just the essentials
./dotfiles.rb essential
# Add git configuration
./dotfiles.rb git
# Set up complete development environment
./dotfiles.rb essential git nvim# Force overwrite existing configurations
./dotfiles.rb -f nvim
# Preview changes without executing
./dotfiles.rb --dry-run essential
# Check what's installed
./dotfiles.rb --status
# List available packages
./dotfiles.rb --list
# Install with automatic yes to prompts
./dotfiles.rb -f -y essential
# Install everything
./dotfiles.rb essential git nvim ghostty wezterm coding-agent-f, --force- Force installation, overwriting existing files-l, --list- List available packages with descriptions-s, --status- Show installation status of all packages-n, --dry-run- Preview changes without executing them-y, --yes- Automatically answer yes to all prompts (for automation)-h, --help- Show help message
The system uses Ruby scripts to create symlinks from files in this repository to their target locations:
- Each package is a directory under
packages/ - Each package contains an
install.rbscript that defines what to link - The main
dotfiles.rbscript processes packages and creates symlinks - Existing files are protected unless
--forceis used
link(source, target)- Create a single symlinklink_files_recursively(source_dir, target_dir)- Recursively link all files in a directory
# Make sure the script is executable
chmod +x dotfiles.rb# Use force mode to overwrite
./dotfiles.rb -f package_name
# Or manually remove the conflicting file
rm ~/.bashrc
./dotfiles.rb essential# List available packages
./dotfiles.rb --list
# Check installation status
./dotfiles.rb --status
# Make sure you're in the dotfiles directory
cd /path/to/dotfiles
./dotfiles.rb package_nameThis system was inspired by:
The goal was to create a simple, local script without external gem dependencies.