- name: Install snapper
  community.general.xbps:
    name:
      - snapper
    state: present

# https://wiki.archlinux.org/title/Snapper#updatedb
- name: Disable updatedb indexing for snapshot directories
  ansible.builtin.copy:
    content: 'PRUNENAMES = ".snapshots"'
    dest: "/etc/updatedb.conf"
    owner: root
    group: root
    mode: 0644
    force: true

- name: Ensure snapper configs directory exists
  ansible.builtin.file:
    dest: "/etc/snapper/configs"
    state: directory
    recurse: true

- name: Ensure root /.snapshots directory exists
  ansible.builtin.file:
    dest: "/.snapshots"
    state: directory
    mode: 0755

- name: Create root backup configuration
  ansible.builtin.template:
    src: snapper-configurations/root.j2
    dest: "/etc/snapper/configs/root"
    mode: 0640
    force: true # ensure contents are always exact

- name: Ensure home /.snapshots directory exists
  ansible.builtin.file:
    dest: "/home/.snapshots"
    state: directory
    mode: 0755

- name: Create homedir backup configuration
  ansible.builtin.template:
    src: snapper-configurations/home.j2
    dest: "/etc/snapper/configs/home"
    mode: 0640
    force: true

- name: Add snap manual safety command
  ansible.builtin.copy:
    src: snapper-snap-script
    dest: "/usr/bin/snap"
    owner: root
    group: root
    mode: 0755

# For now we never activate the snapper daemon
# Does not work without elogind?
# Using snooze (i.e. cron) enabled recurring
# backup tasks instead.
# - name: Activate snapper service
#   ansible.builtin.file:
#     force: "yes"
#     src: "/etc/sv/snapperd"
#     dest: "/etc/runit/runsvdir/default/snapperd"
#     state: link
#   tags: never