Usage

Getting Started

Clone this repo, enter the directory and run the ansible-playbook command to install the software.

wget https://github.com/TerrorSquad/ansible-post-installation/archive/refs/heads/master.zip \
&& unzip master.zip \
&& cd ansible-post-installation-master

Optional: GitHub Token for Rate Limiting

Griffin downloads many packages from GitHub releases. If you encounter rate limiting issues, you can optionally provide a GitHub token:

  1. Create a Personal Access Token (optional):
    • Go to GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)
    • Generate a token with public_repo scope
    • Copy the token
  2. Use with playbook:
    ansible-playbook ./playbook.yaml -K -e username=$(whoami) -e github_token=YOUR_TOKEN_HERE
    

Note: This is completely optional. Griffin works without a token, but may hit GitHub's rate limits during heavy usage (60 requests/hour vs 5000 with token).

Running Playbooks

Linux Systems

Default: Install CLI Tools

This is the default playbook that installs command-line interface (CLI) tools. It's useful for servers or headless systems like WSL.

ansible-playbook ./playbook.yaml -K -e username=$(whoami)

Configure git user

To configure git user, pass the following extra variables:

ansible-playbook ./playbook.yaml -K -e username=$(whoami) -e "git_user_email='your@email.com'" -e "git_user_name='Your Name'"

Install GUI tools

This playbook enables the installation of graphical user interface (GUI) tools.

ansible-playbook ./playbook.yaml -K -e username=$(whoami) -e=gui=true -e=dev_tools_gui=true

Install all software

To install all available software (both CLI and GUI), use the following command:

ansible-playbook ./playbook.yaml -K -e username=$(whoami) -e=all=true

macOS Systems

Default: Install CLI Tools

ansible-playbook ./playbook_macos.yaml -K -e username=$(whoami)

Configure git user

ansible-playbook ./playbook_macos.yaml -K -e username=$(whoami) -e "git_user_email='your@email.com'" -e "git_user_name='Your Name'"

Install GUI tools

ansible-playbook ./playbook_macos.yaml -K -e username=$(whoami) -e=gui=true -e=dev_tools_gui=true

Install all software

ansible-playbook ./playbook_macos.yaml -K -e username=$(whoami) -e=all=true

Using Tags (New!)

You can now run specific parts of the setup using Ansible tags. This is faster and more granular than running the whole playbook.

Run only shell configuration (Zsh, Oh My Zsh, Powerlevel10k):

ansible-playbook ./playbook.yaml -K -e username=$(whoami) --tags "shell"

Install only specific languages:

ansible-playbook ./playbook.yaml -K -e username=$(whoami) --tags "rust,golang"

Available Tags:

  • system: System preparation
  • homebrew/packages: Install and configure Homebrew
  • shell/zsh/dotfiles: Shell configuration (Zsh, Oh My Zsh, Powerlevel10k)
  • dev/git/editors: Development foundation (git config, neovim)
  • languages/programming: Programming languages (requires language flags)
  • rust, golang, java: Specific languages
  • gui: GUI applications
  • dev-tools: Development tools container
  • docker: Docker installation
  • ddev: DDEV installation
  • fonts: Fonts installation
  • vpn: VPN installation
  • cleanup: Final cleanup tasks

Note: Using a tag like --tags "rust" automatically enables the corresponding feature flag (rust=true), so you don't need to pass it manually.

Congratulations

You've successfully installed Griffin! Now you can enjoy a streamlined and efficient Linux experience.

Available Flags

You can customize the installation by using these flags:

  • -e all=true: Installs all software, including both CLI and GUI tools.
  • -e dev_tools_gui=true: Installs GUI tools specifically for development from the dev_tools_gui.yaml file.
  • -e gui=true: Installs general-purpose GUI tools from the general_use_software_gui.yaml file
  • -e gestures=true: Installs tools related to libinput gestures from the libinput_gestures.yaml file
  • -e rust=true: Installs the Rust programming language and associated tools.
  • -e golang=true: Installs the Go programming language (Golang) and associated tools
  • -e java=true: Installs SDKMan, a tool for managing multiple Java versions
  • -e git_user_email="your@email.com" and -e git_user_name="Your Name": Sets the Git user configuration values username: Sets the username for which the configuration should be applied. Can be overridden from its default value in defaults/main.yaml
  • -K: Prompts for the root password, necessary for certain installation and update tasks
  • -e github_token=YOUR_TOKEN: Optional GitHub token to avoid rate limiting (see above section)

Troubleshooting

GitHub Rate Limiting

If you see errors related to GitHub API rate limits:

  1. Try with a GitHub token (see section above)
  2. Wait and retry - Rate limits reset every hour
  3. Run with fewer packages - Use specific flags instead of -e all=true

Common Issues

  • Permission denied: Make sure to use -K flag for sudo password
  • Connection timeouts: Check your internet connection
  • Package conflicts: Some packages may conflict with existing installations