Files
dotfiles/config/ansible/tasks/workstations/snaps.yml
Menno van Leeuwen 85e22281b1
Some checks failed
Ansible Lint Check / check-ansible (push) Failing after 16s
Nix Format Check / check-format (push) Successful in 56s
Python Lint Check / check-python (push) Failing after 13s
feat: add 1Password and Firefox installation tasks, remove MegaSync tasks
2025-03-18 13:10:26 +01:00

75 lines
1.8 KiB
YAML

---
- name: Ensure snapd is installed
ansible.builtin.package:
name: snapd
state: present
become: true
- name: Ensure snapd service is enabled and started
ansible.builtin.systemd:
name: snapd
state: started
enabled: true
become: true
- name: Get list of installed Snaps
ansible.builtin.command: snap list
register: installed_snaps
changed_when: false
- name: Define protected system snaps
ansible.builtin.set_fact:
system_snaps:
- snapd
- core
- core18
- core20
- core22
- bare
- gtk-common-themes
- gnome-3-28-1804
- gnome-3-34-1804
- gnome-3-38-2004
- gnome-42-2204
- desktop-security-center
- firmware-updater
- prompting-client
- snap-store
- snapd-desktop-integration
- name: Define desired Snaps
ansible.builtin.set_fact:
desired_snaps:
- name: telegram-desktop
classic: false
- name: whatsapp-desktop-client
classic: false
- name: Install desired Snap packages
ansible.builtin.command: "snap install {{ item.name }} {{ '--classic' if item.classic else '' }}"
loop: "{{ desired_snaps }}"
become: true
register: snap_install
changed_when: "'already installed' not in snap_install.stderr"
failed_when:
- snap_install.rc != 0
- "'already installed' not in snap_install.stderr"
- name: Remove undesired Snap packages
ansible.builtin.command: "snap remove {{ item }}"
become: true
loop: >-
{{
installed_snaps.stdout_lines[1:]
| map('split', ' ')
| map('first')
| difference(desired_snaps | map(attribute='name'))
| difference(system_snaps)
}}
register: snap_remove
changed_when: snap_remove.rc == 0
failed_when:
- snap_remove.rc != 0
- "'not installed' not in snap_remove.stderr"
- "'cannot remove' not in snap_remove.stderr"