cli-standardization/workstation.yml
Travis Herbranson 06034dec95 Add workstation playbook — consolidates arch_custom + manjaro-laptop
New roles:
- workstation: Arch base (yay, UV, Hyprland, tiling tools, fonts,
  productivity apps, NVIDIA auto-detect, tmux + TPM)
- dev_apps: optional dev tools (PyCharm, R/RStudio, databases)
- claude_code: Claude Code CLI install/update via npm
- user_bootstrap: fresh machine user setup (SSH key, sudo)

CLI/shell/terminal setup excluded — handled by existing cli_modern role.
workstation.yml runs cli_modern first, then workstation roles in phases.
All roles tagged for selective deployment.

Passes ansible-lint at production level.
2026-05-02 18:38:01 -04:00

46 lines
1.4 KiB
YAML

---
# Arch Linux workstation setup — combines cli_modern + workstation roles.
#
# Usage:
# ansible-playbook workstation.yml -i inventory.yml
# ansible-playbook workstation.yml -i inventory.yml --tags cli # CLI tools only
# ansible-playbook workstation.yml -i inventory.yml --tags workstation # System + apps only
# ansible-playbook workstation.yml -i inventory.yml --tags dev_apps # Dev apps only
# ansible-playbook workstation.yml -i inventory.yml --tags claude_code
- name: Arch Linux workstation — full setup
hosts: all
gather_facts: true
roles:
# Phase 1: User bootstrap (only for fresh machines)
# Uncomment and set vars if provisioning a new machine
# - role: user_bootstrap
# tags: [bootstrap]
# vars:
# bootstrap_user: herby
# bootstrap_ssh_pubkey: "{{ lookup('file', '~/.ssh/id_ed25519.pub') }}"
# Phase 2: CLI environment (Fish, Starship, modern coreutils)
- role: cli_modern
tags: [cli]
# Phase 3: Workstation base (yay, UV, Hyprland, fonts, productivity, NVIDIA)
- role: workstation
become: true
tags: [workstation]
# Phase 4: Docker
- role: geerlingguy.docker
become: true
tags: [docker, workstation]
# Phase 5: Development apps (PyCharm, databases)
- role: dev_apps
become: true
tags: [dev_apps, workstation]
# Phase 6: Claude Code CLI
- role: claude_code
tags: [claude_code, dev_tools]