This repository contains the Ansible configuration to automate the setup and maintenance of my personal computer, vps and more. The goal is to turn my machine configuration into "Infrastructure as Code" (IaC), allowing me to rebuild or sync my environment quickly and consistently.
This project relies on apt, GNOME-specific tooling, and distro-specific package repositories, so it only supports:
| OS | Minimum version |
|---|---|
| Ubuntu | 22.04 LTS (Jammy) or newer |
| Debian | 12 (Bookworm) or newer |
Any other OS/distro (Fedora, Arch, macOS, WSL without a supported base, etc.) is not supported. bootstrap.sh validates the OS before making any changes and aborts with an error if it's incompatible.
To set up a fresh machine, just run:
curl -sSL https://raw.githubusercontent.com/stanleygomes/genesis/refs/heads/master/bootstrap.sh | bashThis command will install git, ansible, clone this repository, and run the setup.
- Manages system packages (Apt, Flatpak, Snap etc).
- Configures development environments (Node.js with pnpm, Java, Python, Go, PHP).
- Installs and configures AI tools (Antigravity CLI, GitHub Copilot CLI, Antigravity IDE etc).
- Setups CLI/TUI tools with desktop shortcuts (LazyDocker, etc).
- Customizes the shell and terminal (Zsh with Oh My Zsh, Bash, aliases, GNOME Terminal settings).
Before running the playbooks, you need to have Ansible installed on your machine. If you use bootstrap.sh, you don't need to install Ansible manually.
Note
How to install: https://docs.ansible.com/projects/ansible/latest/installation_guide/intro_installation.html
The easiest way to set up or update the environment is running bootstrap.sh (see the one-liner above). It installs the system requirements, clones/pulls this repository, and opens an interactive whiptail checklist to select which playbooks to run on top of common.yml.
After the first run, the zsh role installs a genesis shell function in your .zshrc that re-runs the bootstrap one-liner, so you can just type:
genesisfrom any terminal to update or reconfigure your machine.
To run a specific configuration or multiple configurations:
make run CONFIG="bash desktop"make check CONFIG="desktop"βοΈ ansible/ # Ansible configuration and deployment files
βββ configs/ # Specific tool configurations (VS Code, Gideon, etc.)
β βββ gideon/ # Gideon Media Tools (Makefile, gideon.sh)
βββ group_vars/ # Global configuration variables (all.yml)
βββ playbooks/ # Setup playbooks (common.yml, desktop.yml, etc.)
βββ roles/ # Modular Ansible roles (gideon, zsh, docker, etc.)
βββ ansible.cfg # Ansible configuration settings
βββ inventory # Ansible host definition (localhost)
π οΈ Makefile # Helper tasks to run, check, list playbooks
π bootstrap.sh # One-liner script to bootstrap environment (playbook selection via whiptail)
Here is a list of all roles available in this repository:
| Role | Description |
|---|---|
agents |
Syncs local Genesis .agents (Skills, rules) into ~/.agents and ~/.claude. |
antigravity-cli |
Installs the Antigravity CLI client tool (agy) and configures custom statusLine settings. |
arkflix |
Provisions self-hosted media server stack (Jellyfin, Navidrome, Nginx reverse proxy, Let's Encrypt SSL, and UFW firewall). |
atuin |
Installs and configures Atuin shell history search. |
autoremove |
Aggregates uninstallation and removal actions (APT, Flatpak, Snap packages, desktop shortcuts, custom paths/files). |
bruno |
Installs Bruno API client (open-source, Git-friendly alternative to Postman/Insomnia). |
darktable |
Installs Darktable photography workflow application and RAW developer. |
dbeaver |
Installs DBeaver Community Edition (SQL database explorer/client). |
docker |
Installs Docker Engine, Docker Compose, and sets permissions/user groups. |
dust |
Installs dust (a modern, intuitive version of du written in Rust). |
evangelist |
Displays a random biblical verse on terminal session launch using local genesis files. |
eza |
Installs and configures eza (a modern, feature-rich replacement for ls). |
ghostty |
Installs Ghostty terminal emulator. |
gideon |
Deploys Gideon Media Tools CLI (~/.config/gideon), configures gideon shell wrapper in ~/.zshrc, and handles media downloads & Chromecast conversion. |
git |
Installs Git, configures user credentials, and generates/sets GitHub SSH keys. |
github-copilot |
Installs GitHub Copilot CLI globally via NPM. |
go |
Installs Go language runtime and golangci-lint to ~/.local/go. |
google-chrome |
Installs Google Chrome web browser. |
java |
Installs SDKMAN and configures Java development dependencies. |
mongodb-compass |
Installs MongoDB Compass GUI client. |
mongosh |
Installs MongoDB Shell (mongosh) and configures mongo-connect credential management script. |
neovim |
Installs latest Neovim editor via its official AppImage (including libfuse2), configuring it with lazy.nvim and plugins (Gruvbox, Telescope, Treesitter). |
nocturne |
Installs Nocturne ambient sound and music player application via Flatpak. |
node |
Installs NVM, Node.js runtime, and the pnpm package manager. |
openspec |
Installs OpenSpec CLI (@fission-ai/openspec) globally via NPM. |
oxker |
Installs oxker TUI binary for Docker container monitoring and aliases docker ps. |
php |
Installs PHP runtime, extensions, and Composer package manager. |
python |
Installs Python runtime dependencies, Astral uv tool, and Python 3.14. |
system |
Installs GNOME Tweaks and GNOME Extension Manager. |
starship |
Installs and configures Starship prompt for Bash and Zsh. |
terraform |
Installs Terraform CLI tool from HashiCorp releases. |
tuicr |
Installs tuicr (Terminal UI for Code Reviews). |
vscode |
Installs VS Code, syncs user settings/keybindings, and installs extensions. |
zsh |
Installs Zsh and Oh My Zsh, sets Zsh as default shell, and configures core aliases/functions. |
This project organises roles into the following playbooks:
Target: Core command line utilities, runtimes and development tools required for any setup.
Target: Lean workstation baseline β Git, Docker, Zsh/Oh My Zsh, CLI tools, Neovim, and the
evangelistbiblical verse display.
Target: User interfaces, web browsers, IDEs, desktop entries and database tools.
Target: Custom bundle containing browsers, Bruno, and databases.
Target: Provisioning of self-hosted media server stack (Jellyfin, Navidrome, Nginx SSL reverse proxy, Let's Encrypt renewal, UFW).
