Files
mw-pfeddersheim-workstation/ansible/roles/dev-tools/tasks/main.yml
T
ja 7d8760592e chore: align IaC with today's package installs + PDF comparison docs
DevOps sync (2026-05-21):
- Remove onlyoffice-desktopeditors from absent list (actively used)
- Add gnome-keyring, rbw to common role (secrets migration)
- Add perl-image-exiftool, icoutils, innoextract-git to dev-tools
  (Windows installer inspection)
- Create fonts role: Inter, Cascadia Code, Fira, Source Sans, TeX Gyre
- Create pdf role: zathura, zathura-pdf-mupdf, python-weasyprint
- Register new roles in workstation.yml

PDF comparison:
- Add pdf-comparison docs with Quarto/Typst/Pandoc outputs
- Add batch-pdf.sh script
- Update yazi-cheatsheet.md
- Ignore .quarto/ cache
2026-05-21 13:38:50 +02:00

175 lines
4.0 KiB
YAML

---
- name: Ensure core workstation development tools are installed
community.general.pacman:
name:
# Build essentials
- git
- base-devel
# CLI tools (infra.standards.md §4)
- ripgrep
- ripgrep-all
- fd
- jq
- bat
- eza
- zoxide
- fzf
- gum
- dust
- bottom
- scrot
- shellcheck
- shfmt
# Git providers CLI
- github-cli
- tea
- glab
# Python toolchain
- ruff
- uv
# DevOps & IaC
- ansible
- terraform
- docker
- docker-buildx
- docker-compose
- podman
- cmake
# Security & supply chain
- cosign
- syft
- trivy
- certbot
# Container inspection
- dive
# Email CLI
- himalaya
# Document toolchain (markdown-to-pdf skill)
- typst
- pandoc
# WordPress CLI
- wp-cli
# C/C++ toolchain (cpp skill)
- clang
# Windows installer inspection (amicron-version-inspection skill)
- perl-image-exiftool
- icoutils
- innoextract-git
# CalDAV tools (caldav-webcal skill)
- khal
- vdirsyncer
# 3D/CAD tools (openscad, freecad, f3d skills)
- openscad
- freecad
- f3d
# Terminal
- kitty
state: present
- name: Ensure Node.js global CLI tools are installed
become: true
become_user: "{{ system_user }}"
command: pnpm add -g @marp-team/marp-cli
changed_when: false
tags: [nodejs, marp]
- name: Ensure Python CLI tools are installed via pipx
become: true
become_user: "{{ system_user }}"
command: "pipx install {{ item }}"
loop:
- semgrep
- huggingface_hub[cli]
changed_when: false
tags: [python, pipx]
- name: Ensure redundant and non-core software is removed
community.general.pacman:
name:
- firefox-developer-edition
- audacity
- kdenlive
- obs-studio
- shotcut
- qgis
- tipp10
- xournalpp
- bleachbit
- reiserfsprogs
- dmraid
- virt-manager
- guvcview
- helvum
- qpwgraph
- glmark2
- act-git
- oha
- unetbootin
- ventoy
state: absent
- name: Ensure legacy editor packages are removed
community.general.pacman:
name:
- code
- code-oss
- code-marketplace
state: absent
- name: Configure Chrome flags for WebGPU
copy:
dest: "/home/{{ system_user }}/.config/chrome-flags.conf"
content: |
--enable-unsafe-webgpu
--enable-vulkan
--enable-features=Vulkan
--ignore-gpu-blocklist
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: '0644'
tags: [chrome, webgpu]
- name: Fix kitty cursor keys by removing TERM override in .bashrc
ansible.builtin.lineinfile:
path: "/home/{{ system_user }}/.bashrc"
regexp: '^export TERM=xterm-256color'
line: '# export TERM=xterm-256color # Fix: allow kitty to set its own TERM for cursor keys'
state: present
become: yes
become_user: "{{ system_user }}"
tags: [kitty, shell]
- name: Ensure kitty configuration directory exists
ansible.builtin.file:
path: "/home/{{ system_user }}/.config/kitty"
state: directory
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: '0755'
become: yes
become_user: "{{ system_user }}"
tags: [kitty]
- name: Configure kitty for proper terminal behavior
ansible.builtin.copy:
dest: "/home/{{ system_user }}/.config/kitty/kitty.conf"
content: |
# Managed by Ansible - saTway DevOps
shell bash
editor vim
# Shell integration is enabled by default in kitty 0.24.0+
# but we can explicitly enable it for clarity.
shell_integration enabled
# Ensure cursor keys work correctly by not overriding TERM in shell
# (Handled via .bashrc fix)
include /home/mw/.config/kitty/kitty-cline-keybindings.conf
owner: "{{ system_user }}"
group: "{{ system_user }}"
mode: '0644'
become: yes
become_user: "{{ system_user }}"
tags: [kitty]