diff --git a/bootstrap/host/README.md b/bootstrap/host/README.md index 7142d9e..5f3d5da 100644 --- a/bootstrap/host/README.md +++ b/bootstrap/host/README.md @@ -28,6 +28,7 @@ The playbook: - configures apt repositories for Docker, Kubernetes, Helm, OpenTofu, and Brave - installs the captured Debian package set, filtering packages unavailable on the current Debian release +- installs user-level pipx CLI tools such as `yt-dlp` - installs Zoom from the upstream `.deb` when requested on amd64 - adds `jv` to expected local groups - enables core services such as Docker, containerd, kubelet, ssh, cron, and diff --git a/bootstrap/host/group_vars/debian_pc.yml b/bootstrap/host/group_vars/debian_pc.yml index 33ea59b..418aa92 100644 --- a/bootstrap/host/group_vars/debian_pc.yml +++ b/bootstrap/host/group_vars/debian_pc.yml @@ -27,6 +27,9 @@ debian_pc_enable_services: - kubelet - bluetooth +debian_pc_pipx_packages: + - yt-dlp + debian_pc_hold_packages: - containerd.io - kubeadm diff --git a/bootstrap/host/playbook.yml b/bootstrap/host/playbook.yml index 05fcf06..5056671 100644 --- a/bootstrap/host/playbook.yml +++ b/bootstrap/host/playbook.yml @@ -166,6 +166,25 @@ - "'zoom' in debian_pc_apt_manual_packages" - ansible_facts.architecture == "x86_64" + - name: Ensure pipx binary path is configured for the homelab user + ansible.builtin.command: + cmd: python3 -m pipx ensurepath + become: true + become_user: "{{ debian_pc_user }}" + environment: + PATH: "{{ debian_pc_user_home }}/.local/bin:/usr/local/bin:/usr/bin:/bin" + changed_when: false + + - name: Install user pipx CLI tools + ansible.builtin.command: + cmd: "python3 -m pipx install {{ item }}" + creates: "{{ debian_pc_user_home }}/.local/bin/{{ item }}" + become: true + become_user: "{{ debian_pc_user }}" + environment: + PATH: "{{ debian_pc_user_home }}/.local/bin:/usr/local/bin:/usr/bin:/bin" + loop: "{{ debian_pc_pipx_packages }}" + - name: Hold Kubernetes and runtime packages ansible.builtin.dpkg_selections: name: "{{ item }}"