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.
46 lines
1.4 KiB
YAML
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]
|