Important
This repository is deprecated as a standalone project.
Active development has moved to https://github.com/kedwards/debian-sysinit in the sysinit/ legacy subtree and the sysinit-iso/ current implementation subtree.
Use the monorepo as the canonical source of truth.
An opinionated script to initialize your Linux system.
This release has been tested on the following distributions, and should work on all distros based from:
- Arch
- CentOS
- Debian
- Fedora
- Ubuntu
Before running the installer, ensure you have:
-
Sudo privileges on the machine
-
Git identity configured globally:
git config --global user.name "Your Name" git config --global user.email "you@example.com"
or
export GIT_USER_NAME="Your Name" export GIT_USER_EMAIL="you@example.com"
Why: The installer passes your Git identity into the Ansible role and will fail if not provided. It will prompt if missing, but will exit if you leave either value blank.
-
An SSH key present and loadable by ssh-agent:
- Recommended to use ed25519 keys
- Check for an existing key:
ls ~/.ssh/id_ed25519 ~/.ssh/id_rsa
- If you don't have one, generate a key:
ssh-keygen -t ed25519 -C "your_email@example.com" - Add it to your agent (if needed):
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
Why: The installer needs SSH access to clone private repositories. If no usable key is found, it exits with instructions to generate one.
Option 1: One-liner (audited remotely)
wget -O - https://raw.githubusercontent.com/kedwards/sysinit/refs/heads/main/install.sh | bashor
curl -sSL https://raw.githubusercontent.com/kedwards/sysinit/refs/heads/main/install.sh | bashOption 2: Clone locally, review, then run
git clone https://github.com/kedwards/sysinit.git
cd sysinit
./install.shOption 3: Run Ansible directly (manual, for advanced users)
The installer bootstraps tooling and a virtual environment for you; if you prefer, you can run the playbook directly:
- Ensure Python 3.11+ and dependencies are installed (uv/mise steps are handled by install.sh)
- Install dependencies:
pip install -r requirements.txt ansible-galaxy install -r requirements.yml
- Run the playbook:
ansible-playbook -i inventory/hosts.yml playbook.yml -K
This project uses Task for automation. After cloning:
# Install dependencies
task install-deps
# Install pre-commit hooks
task install-hooks
# See all available tasks
task --list-all
# Run linting
task lint
# Run tests
task molecule-testAvailable Development Commands:
task lint- Run all linters (pre-commit, ansible-lint, shellcheck)task syntax-check- Ansible syntax validationtask molecule-test- Full Molecule test suitetask molecule-converge- Quick converge for developmenttask scan-secrets- Detect secrets in codetask clean- Remove build artifacts
Notes:
- The installer will start an ssh-agent and attempt to load a default SSH key (id_ed25519, id_rsa). If none are found or loadable, it exits with guidance.
- The playbook targets localhost by default and will ask for sudo (-K) to perform system changes.