GettingStarted

Configuration

Customize Griffin with variables, flags, and tags

Feature Flags

Griffin is modular. You can control exactly what gets installed using Ansible's "Extra Variables" (-e). By default, running the playbook without arguments installs only the core CLI tools and shell environment.

gui

Installs general GUI applications (browsers, communication apps).

Default: false Type: boolean

dev_tools_gui

Installs GUI development tools (VS Code, JetBrains Toolbox, DBeaver).

Default: false Type: boolean

all

Installs everything the author uses — CLI, GUI apps, dev tools, and optional extras. This is a maintainer's full workstation, not a recommended default.

Default: false Type: boolean

ci

Exercises every code path worth testing — optional CLI tools, Docker, DDEV, and language toolchains — while skipping GUI apps, IDEs, and mobile SDKs. Used by CI; not intended for human use.

Default: false Type: boolean

docker_install

Explicitly enables/disables Docker installation.

Default: true Type: boolean

gestures

Installs libinput-gestures for touchpad gestures (Linux only).

Default: false Type: boolean

rust

Installs Rust language toolchain and crates.

Default: false Type: boolean

viber

Installs Viber (Linux only). Not included in all.

Default: false Type: boolean

Interactive picker

If you'd rather not memorize flags, ./install.sh reads them straight out of defaults/main.yaml and lets you tick what you want:

./install.sh

Type a number to toggle a flag (or several at once: 1 4 7), a for everything, n for nothing, q to quit. Press Enter when done — it shows the resulting ansible-playbook command and asks before running it.

Flags default to their values in defaults/main.yaml, so pressing Enter straight away reproduces the standard install.

No dependencies — plain bash, nothing to install first. It runs on a fresh system before Homebrew exists.

Examples

Install everything:

ansible-playbook ./playbook.yaml -K -e all=true

Install CLI + GUI Dev Tools (no general apps):

ansible-playbook ./playbook.yaml -K -e dev_tools_gui=true

Git Configuration

You can set up your global .gitconfig during the installation process.

ansible-playbook ./playbook.yaml -K \
  -e "git_user_email='your@email.com'" \
  -e "git_user_name='Your Name'"

GitHub API Rate Limiting

Griffin downloads many tool binaries directly from GitHub Releases. Unauthenticated requests are limited to 60 per hour, which allows for occasional failures if you run the playbook frequently or on a shared IP.

Generate Token

Create a Personal Access Token (Classic) on GitHub with only the public_repo scope.

Use Token

Pass it to the playbook to increase your limit to 5,000 requests/hour.

ansible-playbook ./playbook.yaml -K -e github_token=YOUR_TOKEN

Using Tags

If you don't want to run the entire playbook, you can use Tags to run specific sections. This is much faster for updates or partial installs.

Common Tags:

shell

Configures Zsh, Oh-My-Zsh, Powerlevel10k, and Antidote.

git

Installs and configures Git tools (git, gh, gitkraken).

docker

Installs Docker Engine and Compose.

vscode

Installs VS Code and extensions.

packages

Installs system packages via Apt or Homebrew.

system

Runs system preparation and cleanup tasks.

languages

Installs programming languages (Go, Node, Rust, etc.).
Detailed tags are also available for specific languages: rust, golang, python, node.

Example: Refresh only your shell configuration

ansible-playbook ./playbook.yaml -K --tags "shell"