Quick setup scripts for new VMs and containers. These scripts provide a modern development environment with essential tools and secure access to private dotfiles.
# Using curl (preferred)
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/vm-install.sh | bash
# Using wget (if curl not available)
wget -qO- https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/vm-install.sh | bash
# Using curl (preferred)
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/setup-dotfiles-ssh.sh | bash
# Using wget (if curl not available)
wget -qO- https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/setup-dotfiles-ssh.sh | bash
# 1. Set up VM with essential tools
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/vm-install.sh | bash
# OR: wget -qO- https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/vm-install.sh | bash
# 2. Set up SSH access to private dotfiles
curl -fsSL https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/setup-dotfiles-ssh.sh | bash
# OR: wget -qO- https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/setup-dotfiles-ssh.sh | bash
# 3. Your dotfiles are now cloned and ready to use!
Essential development tools:
- git - Version control
- neovim - Modern text editor
- tmux - Terminal multiplexer
- zsh - Advanced shell
- fzf - Fuzzy finder
- tree - Directory viewer
- htop - Process monitor
- curl - Download tool
Modern shell setup:
- Zinit - Fast zsh plugin manager
- Auto-suggestions - Command completion
- Syntax highlighting - Real-time command validation
- History search - Fuzzy history with Ctrl+R
- Vi mode - Vim keybindings with 'jj' escape
- fzf integration - Enhanced tab completion
- Git branch prompt - Shows current branch
- Essential aliases - ll, gs, ga, gc, etc.
Tmux configuration:
- Vim-style navigation - h/j/k/l pane movement
- Mouse support - Click to select panes
- Better splitting - | and - for splits
- Clean status bar - Shows user@host and time
- Quick reload - Prefix+r to reload config
Secure dotfiles access:
- Deploy key generation - Repository-specific SSH key
- Read-only access - Cannot push changes (secure)
- GitHub integration - Guided setup process
- Auto-clone - Downloads your private dotfiles
- Setup detection - Finds and runs install.sh/setup.sh/Makefile
- Repository-specific - Only works for your dotfiles repo
- Read-only by default - Cannot push changes
- Easy to revoke - Remove from GitHub repo settings
- VM-friendly - Safe for temporary environments
- No API keys, passwords, or secrets
- No personal paths or usernames
- No company-specific configurations
- Safe to use on shared or temporary VMs
- Arch Linux - Full package support
- Ubuntu/Debian - Core packages + additional installs
- Fedora/CentOS - Full package support
- macOS - Via Homebrew
- Linux/macOS with internet access
- Package manager - pacman, apt, dnf, or brew
- Basic permissions - sudo access or root (auto-detected)
# Download scripts
wget https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/vm-install.sh
wget https://raw.githubusercontent.com/YOUR_USERNAME/vm-bootstrap/main/setup-dotfiles-ssh.sh
# Make executable
chmod +x vm-install.sh setup-dotfiles-ssh.sh
# Run VM setup
./vm-install.sh
# Run SSH setup (after VM setup)
./setup-dotfiles-ssh.sh
# Test SSH connection
ssh -T github-dotfiles
# Clone dotfiles manually
git clone github-dotfiles:YOUR_USERNAME/dotfiles.git ~/dotfiles
# Remove deploy key when done
# Go to: https://github.com/YOUR_USERNAME/dotfiles/settings/keys
These scripts provide a solid foundation that works well for most developers. For personalized configurations:
- Run the bootstrap - Get the essentials working
- Clone your dotfiles - Use the SSH setup to access private configs
- Run your install script - Apply your personal configurations
- Package not found: Some minimal containers may need additional repos
- Permission denied: Ensure you have sudo access or are running as root
- Locale warnings: Script handles this automatically with fallbacks
- ssh-keygen not found: Script auto-installs SSH tools
- Connection failed: Verify deploy key was added to GitHub correctly
- Clone failed: Check repository name and GitHub access
# Check what was installed
which git nvim tmux zsh fzf
# Test zsh setup
zsh
# Test tmux setup
tmux
# Test SSH setup
ssh -T github-dotfiles
After running these scripts:
- Switch to zsh: Run
zsh
or log out/in - Start tmux: Run
tmux
for terminal multiplexing - Use your dotfiles: Your personal configs are now available
- Customize further: Add any VM-specific configurations
Found an issue or have a suggestion? Feel free to open an issue or submit a pull request!
Note: These are the public bootstrap scripts. Full dotfiles and personal configurations are kept in a separate private repository.