|
27 | 27 | - gnome-shell-extensions # Base extension infrastructure |
28 | 28 | - gnome-shell-extension-manager # GUI for managing extensions |
29 | 29 | - gir1.2-gmenu-3.0 # Required by ArcMenu and Logo Menu |
30 | | - - python3-pip # For pipx |
31 | | - - pipx # Isolated Python apps |
32 | 30 | state: present |
33 | 31 | when: ansible_facts['distribution'] == 'Ubuntu' |
34 | 32 |
|
|
37 | 35 | name: |
38 | 36 | - gnome-shell-extension-common # Base extension infrastructure |
39 | 37 | - gnome-extensions-app # GUI for managing extensions |
40 | | - - pipx # Isolated Python apps |
41 | 38 | state: present |
42 | 39 | when: ansible_facts['distribution'] == 'Fedora' |
43 | 40 |
|
44 | | -- name: Ensure pipx path is configured |
| 41 | +# Install gnome-extensions-cli via UV tool (not pipx) |
| 42 | +# UV manages its own Python environment - no system packages modified |
| 43 | +# Tool venv: ~/.local/share/uv/tools/gnome-extensions-cli/ |
| 44 | +# Binary symlink: ~/.local/bin/gext |
| 45 | +- name: Install gnome-extensions-cli via uv tool |
45 | 46 | ansible.builtin.command: |
46 | | - cmd: pipx ensurepath |
47 | | - become: false |
48 | | - changed_when: false |
49 | | - when: ansible_facts['distribution'] in ['Ubuntu', 'Fedora'] |
50 | | - |
51 | | -# Distro-packaged pipx can be outdated (Ubuntu 24.04 has 1.4.3). |
52 | | -# community.general.pipx requires >= 1.7.0 for application parameter. |
53 | | -# Upgrade pip and pipx system-wide - installs alongside distro versions. |
54 | | -# --break-system-packages required on Ubuntu 24.04+ (PEP 668 protection). |
55 | | -# --ignore-installed avoids "Cannot uninstall pip, RECORD file not found" error. |
56 | | -- name: Upgrade pip to latest (system-wide) |
57 | | - ansible.builtin.command: |
58 | | - cmd: python3 -m pip install --upgrade --break-system-packages --ignore-installed pip |
59 | | - become: true |
60 | | - when: ansible_facts['distribution'] == 'Ubuntu' |
61 | | - changed_when: true |
62 | | - |
63 | | -- name: Upgrade pip to latest (Fedora) |
64 | | - ansible.builtin.pip: |
65 | | - name: pip |
66 | | - state: latest |
67 | | - become: true |
68 | | - when: ansible_facts['distribution'] == 'Fedora' |
69 | | - |
70 | | -- name: Upgrade pipx to latest (system-wide) |
71 | | - ansible.builtin.command: |
72 | | - cmd: python3 -m pip install --upgrade --break-system-packages --ignore-installed pipx |
73 | | - become: true |
74 | | - when: ansible_facts['distribution'] == 'Ubuntu' |
75 | | - changed_when: true |
76 | | - |
77 | | -- name: Upgrade pipx to latest (Fedora) |
78 | | - ansible.builtin.pip: |
79 | | - name: pipx |
80 | | - state: latest |
| 47 | + cmd: uv tool install gnome-extensions-cli |
81 | 48 | become: true |
82 | | - when: ansible_facts['distribution'] == 'Fedora' |
83 | | - |
84 | | -- name: Install gnome-extensions-cli via pipx |
85 | | - community.general.pipx: |
86 | | - name: gnome-extensions-cli |
87 | | - state: present |
88 | | - install_deps: true |
89 | | - become: false |
90 | 49 | become_user: "{{ dfe_actual_user }}" |
91 | 50 | environment: |
92 | | - PIPX_HOME: "{{ dfe_user_home }}/.local/pipx" |
93 | | - PIPX_BIN_DIR: "{{ dfe_user_home }}/.local/bin" |
94 | | - PATH: "{{ dfe_user_home }}/.local/bin:{{ ansible_env.PATH }}" |
| 51 | + PATH: "/usr/local/bin:{{ dfe_user_home }}/.local/bin:{{ ansible_env.PATH }}" |
| 52 | + register: gext_install |
| 53 | + changed_when: "'Installed' in gext_install.stdout" |
| 54 | + failed_when: |
| 55 | + - gext_install.rc != 0 |
| 56 | + - "'already installed' not in gext_install.stderr" |
95 | 57 | when: ansible_facts['distribution'] in ['Ubuntu', 'Fedora'] |
96 | 58 |
|
97 | 59 | # ============================================================================ |
|
0 commit comments