- hosts:
    - malabaricus
  become: yes
  vars:
    fpm_version: 7.3
  handlers:
    - name: systemctl daemon-reload
      become: yes
      systemd:
        daemon_reload: yes

    - name: systemctl restart fpm
      become: yes
      systemd:
        name: "php{{ fpm_version }}-fpm"
        state: restarted
    - name: systemctl reload nextcloud-cron.timer
      become: yes
      systemd:
        unit: nextcloud-cron.timer
        state: reloaded
  roles:
    - minio-server
    - role: nginx
      nginx__template:
        - sites-enabled/default
        - sites-enabled/minio
        - snippets/nextcloud.conf
      ipv6: "[::]:80"
      server_name: minio.trygvis.io
  tasks:
    - apt:
        name:
        - php-imagick
      tags: packages,never
    - tags: nextcloud
      file:
        path: /var/www/html/nextcloud/occ
        mode: ug=rx,o=
        owner: www-data
        group: www-data
    - tags: nextcloud
      copy:
        dest: '/etc/php/{{ fpm_version }}/fpm/conf.d/99-nextcloud.ini'
        content: |
          opcache.enable=1
          opcache.enable_cli=1
          opcache.interned_strings_buffer=8
          opcache.max_accelerated_files=10000
          opcache.memory_consumption=128
          opcache.save_comments=1
          opcache.revalidate_freq=1

          client_max_body_size 10G;
      notify: systemctl restart fpm
    - tags: nextcloud
      lineinfile:
        path: '/etc/php/{{ fpm_version }}/fpm/pool.d/www.conf'
        regexp: '^env\[{{ item.key }}\]'
        line: 'env[{{ item.key }}] = {{ item.value }}'
      with_dict:
        HOSTNAME: '$HOSTNAME'
        PATH: /usr/sbin:/usr/bin:/sbin:/bin
        TMP: /tmp
        TMPDIR: /tmp
        TEMP: /tmp
      notify: systemctl restart fpm

    - tags: nextcloud
      register: service
      copy:
        dest: /etc/systemd/system/nextcloud-cron.service
        content: |
          [Unit]
          Description=Nextcloud cron.php job

          [Service]
          User=www-data
          ExecStart=/usr/bin/php -f /var/www/html/nextcloud/cron.php

    - tags: nextcloud
      register: timer
      copy:
        dest: /etc/systemd/system/nextcloud-cron.timer
        content: |
          [Unit]
          Description=Run Nextcloud cron.php every 5 minutes

          [Timer]
          OnBootSec=5min
          OnUnitActiveSec=5min
          Unit=nextcloud-cron.service

          [Install]
          WantedBy=timers.target

    - name: systemctl daemon-reload
      tags: nextcloud
      when: timer.changed or service.changed
      become: yes
      systemd:
        daemon_reload: yes

    - name: systemctl enable --now nextcloud-cron.timer
      tags: nextcloud
      become: yes
      systemd:
        unit: nextcloud-cron.timer
        enabled: yes
        state: started

# TODO: comply with warnings from https://malabaricus.trygvis.io/settings/admin/overview