Configuration
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.
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'"
ansible-playbook ./playbook_macos.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
git
docker
vscode
packages
system
languages
rust, golang, python, node.Example: Refresh only your shell configuration
ansible-playbook ./playbook.yaml -K --tags "shell"