A new role (separate from base) that gives workstation-class hosts (ubongo now, mamba later) a clean interactive environment: zsh + oh-my-zsh + oh-my-posh, tmux + TPM plugins, and neovim. Dotfiles are real files deployed via GNU stow (not templated); pinned nvim v0.12.2 + oh-my-posh 29.0.1. Configs re-derived (ADR-013) from AnsibleBaobabV4 + the operator's fisi setup on boma's terms: no Nerd Font (headless host), no system LSP suite (nvim uses mason), versions pinned (V4 tracks latest). Applied via playbooks/workstation.yml to the control group for users sjat + claude. Lint + Molecule (idempotent) green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
69 lines
2 KiB
YAML
69 lines
2 KiB
YAML
---
|
|
- name: Look up account for {{ dev_env__user }}
|
|
ansible.builtin.getent:
|
|
database: passwd
|
|
key: "{{ dev_env__user }}"
|
|
|
|
- name: Resolve home directory for {{ dev_env__user }}
|
|
ansible.builtin.set_fact:
|
|
dev_env__home: "{{ getent_passwd[dev_env__user][4] }}"
|
|
|
|
- name: Set login shell to zsh for {{ dev_env__user }}
|
|
ansible.builtin.user:
|
|
name: "{{ dev_env__user }}"
|
|
shell: /usr/bin/zsh
|
|
tags: [users]
|
|
|
|
- name: Clone oh-my-zsh for {{ dev_env__user }}
|
|
become: true
|
|
become_user: "{{ dev_env__user }}"
|
|
ansible.builtin.git:
|
|
repo: https://github.com/ohmyzsh/ohmyzsh.git
|
|
dest: "{{ dev_env__home }}/.oh-my-zsh"
|
|
version: master
|
|
depth: 1
|
|
update: false
|
|
|
|
- name: Clone oh-my-zsh custom plugins for {{ dev_env__user }}
|
|
become: true
|
|
become_user: "{{ dev_env__user }}"
|
|
ansible.builtin.git:
|
|
repo: "{{ item.repo }}"
|
|
dest: "{{ dev_env__home }}/.oh-my-zsh/custom/plugins/{{ item.name }}"
|
|
version: master
|
|
depth: 1
|
|
update: false
|
|
loop: "{{ dev_env__omz_custom_plugins }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
|
|
- name: Clone tmux plugins (incl. TPM) for {{ dev_env__user }}
|
|
become: true
|
|
become_user: "{{ dev_env__user }}"
|
|
ansible.builtin.git:
|
|
repo: "{{ item.repo }}"
|
|
dest: "{{ dev_env__home }}/.tmux/plugins/{{ item.name }}"
|
|
version: "{{ item.version }}"
|
|
depth: 1
|
|
update: false
|
|
loop: "{{ dev_env__tmux_plugins }}"
|
|
loop_control:
|
|
label: "{{ item.name }}"
|
|
|
|
- name: Install dotfiles into ~/.dotfiles for {{ dev_env__user }}
|
|
become: true
|
|
become_user: "{{ dev_env__user }}"
|
|
ansible.builtin.copy:
|
|
src: dotfiles/
|
|
dest: "{{ dev_env__home }}/.dotfiles/"
|
|
mode: preserve
|
|
tags: [config]
|
|
|
|
- name: Stow dotfiles into home for {{ dev_env__user }}
|
|
become: true
|
|
become_user: "{{ dev_env__user }}"
|
|
ansible.builtin.command:
|
|
cmd: "stow --no-folding -v -d {{ dev_env__home }}/.dotfiles -t {{ dev_env__home }} zsh tmux nvim"
|
|
register: dev_env__stow
|
|
changed_when: "'LINK:' in dev_env__stow.stderr or 'LINK:' in dev_env__stow.stdout"
|
|
tags: [config]
|