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 (CLI + GUI + Dev Tools). The full experience.
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
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
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'"
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.
Create a Personal Access Token (Classic) on GitHub with only the public_repo scope.
Pass it to the playbook to increase your limit to 5,000 requests/hour.
ansible-playbook ./playbook.yaml -K -e github_token=YOUR_TOKEN
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, java, python, node.Example: Refresh only your shell configuration
ansible-playbook ./playbook.yaml -K --tags "shell"