Supported Distributions
Ubuntu
- Ubuntu 24.04 LTS (Primary testing environment)
- Ubuntu 22.04 LTS
- Ubuntu 20.04 LTS
Debian-Based Systems
Any Debian-based distribution with APT package management should work, including:- Debian 11 (Bullseye) and newer
- Linux Mint
- Pop!_OS
- elementary OS
Prerequisites
Before running the bootstrap script, ensure your system has:Minimal Requirements
Bootstrap Installation
The bootstrap script (bootstrap.sh) automatically installs all required dependencies:
- curl - For downloading resources
- git - Version control system
- age - Encryption tool for secure files
- gnupg - GPG key management
- software-properties-common - APT repository management
- snapd - Snap package manager (optional)
- ansible - Configuration management
- Bitwarden CLI (
bw) - Secret management - chezmoi - Dotfiles manager
Installation Methods
Quick Start
On a fresh Ubuntu/Debian machine:What the Bootstrap Does
- Verifies non-root execution - Prevents accidental root installation
- Updates APT repositories - Ensures latest package information
- Installs core dependencies - curl, git, age, gnupg, software-properties-common, snapd
- Installs Ansible - Adds PPA and installs latest stable version
- Installs Bitwarden CLI - Via snap (preferred) or npm fallback
- Installs chezmoi - Via snap (classic) or install script fallback
- Authenticates Bitwarden - Logs in and unlocks vault
- Configures age encryption - Retrieves or generates encryption key
Package Manager Aliases
On Linux systems, convenient APT shortcuts are automatically configured:System Configuration
The Ansible playbook (ansible/site.yml) provides automated system setup:
Base Packages
Installed via the data-drivencommon role from ansible/group_vars/all.yml:
- Development tools: git, curl, jq, htop
- Editors and IDEs
- Cloud tools: terraform, AWS CLI
- Browsers: Google Chrome
- Security tools: age, gnupg
System Hardening
- Configures passwordless
sudofor the current user - Sets proper permissions on SSH keys (600)
- Encrypts sensitive files with age
Desktop Environment (GNOME)
For desktop installations, GNOME settings are configured:- Dark mode preference
- Custom clock format (show date, hide seconds)
- Power management (disable sleep on AC)
- Window manager preferences
Shell Environment
Bash Configuration
Custom bash aliases and functions include: Navigation:Editor Integration
chezmoi is configured for VS Code integration:chezmoi edit- Opens files in VS Codechezmoi diff- Shows diffs in VS Codechezmoi merge- Resolves conflicts in VS Code
Testing
The configuration is continuously tested on Ubuntu 24.04 in GitHub Actions CI:CI Pipeline
- Ansible Lint - Validates playbook syntax and best practices
- chezmoi Validation - Dry-run template initialization
- Integration Tests - Full end-to-end testing:
- Bootstrap script execution
- Ansible playbook application
- Dotfiles deployment
- Package installation verification
- File permissions validation
Local Testing
Run integration tests locally:- Dotfiles are applied (
~/.bash_aliases,~/.gitconfig, etc.) - Required packages are installed
- age key exists with correct 600 permissions
Troubleshooting
Permission Denied
If you encounter permission errors:Missing Dependencies
If a dependency is missing, manually install:Snap Not Available
If snap is not available on your system, the bootstrap script automatically falls back to:- Bitwarden CLI: npm installation
- chezmoi: Direct install script to
~/.local/bin
~/.local/bin is in your PATH:
Security
File Encryption
Sensitive files are encrypted with age:- SSH config and keys (
.ageextension in repository) - AWS credentials
- Custom encrypted dotfiles
Secret Management
All secrets are managed through Bitwarden:- SSH private keys stored as Secure Notes
- AWS credentials in custom fields
- age encryption key backed up securely
Key Storage
Next Steps
- See WSL Support for Windows Subsystem for Linux
- Check Compatibility Matrix for system requirements
- Review the Quick Start Guide for initial setup