Opinionated bootstrap scripts for initializing Linux and Windows developer workstations.
Tested on:
- Arch
- CentOS
- Debian
- Fedora
- Ubuntu
The installer should also work on most distributions derived from these families.
Tested on:
- Windows 11
- Windows 10
The installer configures:
- Git
- AWS CLI
- AWS Session Manager Plugin
- mkcert
- WSL2
- A Linux distribution running Reach sysinit inside WSL
Before running the installer, ensure you have:
The installer performs system-level changes and requires sudo access.
Configure Git globally:
git config --global user.name "Your Name"
git config --global user.email "you@example.com"or provide values using environment variables:
export GIT_USER_NAME="Your Name"
export GIT_USER_EMAIL="you@example.com"The installer passes your Git identity into the Ansible roles and will fail if neither method is provided.
The installer requires SSH access to clone private repositories.
Check for an existing key:
ls ~/.ssh/id_ed25519 ~/.ssh/id_rsaGenerate one if necessary:
ssh-keygen -t ed25519 -C "your_email@example.com"Load the key into your agent:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519Using wget:
wget -O - https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.sh | bashUsing curl:
curl -sSL https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.sh | bashgit clone https://github.com/withreach/sysinit.git
cd sysinit
./install.shFor advanced users who prefer to manage dependencies manually.
Install dependencies:
pip install -r requirements.txt
ansible-galaxy install -r requirements.ymlRun the playbook:
ansible-playbook -i inventory/hosts.yml playbook.yml -Kansible-playbook playbook.yml -e "install_reach=true"or:
./install.sh --extra-vars "install_reach=true"By default:
install_reach=false
Set it to true to include Reach components during installation.
Open PowerShell as Administrator before running any commands.
Installs:
- Git
- AWS CLI
- AWS Session Manager Plugin
- mkcert
- WSL2
- Ubuntu 24.04
- Reach sysinit inside WSL
irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1 | iexAlso installs:
- Visual Studio Code
- Slack
- Postman
- Meld
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1))) -InstallExtrasCopies Windows SSH keys into WSL.
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1))) -SyncSSHKeysExample using Debian:
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1))) `
-WSLDistro Debian& ([scriptblock]::Create((irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1))) `
-DistroName dev-linux& ([scriptblock]::Create((irm https://raw.githubusercontent.com/withreach/sysinit/refs/heads/main/install.ps1))) `
-InstallExtras `
-SyncSSHKeys `
-WSLDistro Ubuntu-24.04 `
-DistroName rch-devgit clone https://github.com/withreach/sysinit.git
cd sysinit
.\install.ps1 -InstallExtras -SyncSSHKeysThis project uses Task for automation.
Install development dependencies:
task install-depsInstall pre-commit hooks:
task install-hooksView available tasks:
task --list-allRun linting:
task lintRun tests:
task molecule-test| Command | Description |
|---|---|
task lint |
Run all linters |
task syntax-check |
Validate Ansible syntax |
task molecule-test |
Run the full Molecule suite |
task molecule-converge |
Quick converge for development |
task scan-secrets |
Scan the repository for secrets |
task clean |
Remove build artifacts |
- The installer starts
ssh-agentautomatically if required. - It attempts to load
id_ed25519andid_rsa. - If no usable key is available, installation stops with instructions.
- The installer must be executed from an elevated PowerShell session.
- SSH key synchronization is disabled by default.
- The default WSL distribution is
Ubuntu-24.04. - The default WSL instance name is
rch-ubuntu.