- name: Set up static IP
  hosts: emma
  become: yes
  roles:
    - role: any.common.static-ip
      vars:
        interface: 'enp1s0'
        static_ip: '192.168.0.2'
        broadcast_ip: '192.168.0.255'
        router_ip: '192.168.0.1'
    - any.common.ssh
    - any.tools.ufw
  tags: networking

- name: Configure BTRFS RAID
  hosts: emma
  become: yes
  roles:
    - any.common.raid
  tags: raid

- name: Set up Jellyfin
  hosts: emma
  become: yes
  roles:
    - any.software.jellyfin
  tags: jellyfin

- name: Set up Miniflux
  hosts: emma
  become: yes
  tags: miniflux
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/miniflux/postgres"
    - role: any.software.miniflux-podman
      vars:
        postgres_data_dir: '/data/miniflux/postgres'

- name: Set up WebDAV
  hosts: emma
  become: yes
  tags: webdav
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/webdav/data"
    - role: any.software.webdav
      vars:
        webdav_version: '5.7.4'
        data_dir: '{{ btrfs_raid.path }}/webdav/data'

        webdav_user: "{{ vault_webdav_user }}"
        webdav_password: "{{ vault_webdav_password }}"
        webdav_password_bcrypt: "{{ vault_webdav_password_bcrypt }}"

- name: Set up Gitea
  hosts: emma
  become: yes
  tags: gitea
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          # Data files and LFS are placed on RAID
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/gitea/data"
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/gitea/lfs"

          # Repositories and database are stored in NVME
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/gitea/repositories"
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/gitea/postgres"

    - role: any.software.gitea
      vars:
        gitea_data_dir: '{{ btrfs_raid.path }}/gitea/data'
        gitea_lfs_dir: '{{ btrfs_raid.path }}/gitea/lfs'
        gitea_repositories_dir: '{{ btrfs_nvme.path }}/data/gitea/repositories'
        postgres_data_dir: '{{ btrfs_nvme.path }}/data/gitea/postgres'

- name: Set up Otter
  hosts: emma
  become: yes
  tags: otter
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/otter/data"
    - role: any.software.otter
      vars:
        data_dir: '{{ btrfs_nvme.path }}/data/otter/data'

- name: Set up Nefarious
  hosts: emma
  become: yes
  tags: nefarious
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/nefarious/nefarious"
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/nefarious/jackett"
    - role: any.software.nefarious-podman
      vars:
        host_download_dir: "/mnt/data1/media"
        transmission_settings_path: "/etc/nefarious/transmission-settings.json"
        nefarious_config_dir: "/mnt/data1/nefarious/nefarious"
        jackett_data_dir: "/mnt/data1/nefarious/jackett"
        nefarious_admin_user: "{{ vault_nefarious_admin_user }}"
        nefarious_admin_pass: "{{ vault_nefarious_admin_pass }}"

- name: Set up Actual
  hosts: emma
  tags: actual
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/actual/data"
      become: true
    - role: any.software.actual-podman
      vars:
        data_dir: '/data/actual/data'

- name: Set up Baikal
  hosts: emma
  tags: baikal
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/baikal/config"
      become: true
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/baikal/Specific"
      become: true
    - role: any.software.baikal-podman
      vars:
        baikal_config_dir: '/data/baikal/config'
        baikal_specific_dir: '/data/baikal/Specific'

- name: Set up Syncthing
  hosts: emma
  tags: syncthing
  become: true
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/syncthing/data"
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/syncthing/config"
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/syncthing/home"
    - role: any.software.syncthing
      vars:
        syncthing_data_dir: '/mnt/data1/syncthing/data'
        syncthing_home_dir: '/mnt/data1/syncthing/home'
        syncthing_config_dir: '/mnt/data1/syncthing/config'

- name: Set up Monica
  hosts: emma
  tags: monica
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/monica/data"
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/monica/mariadb"
      become: true
    - role: any.software.monica-podman
      vars:
        monica_data_dir: '/data/monica/data'
        mariadb_data_dir: '/data/monica/mariadb'
    # - role: any.software.syncthing
    #   vars:
    #     syncthing_data_dir: '/mnt/data1/syncthing/data'
    #     syncthing_home_dir: '/mnt/data1/syncthing/home'
    #     syncthing_config_dir: '/mnt/data1/syncthing/config'
    #
- name: Set up Recipya
  hosts: emma
  tags: recipya
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/recipya/data"
      become: true
    - role: any.software.recipya-podman
      vars:
        data_dir: '/data/recipya/data'

- name: Set up Immich
  hosts: emma
  tags: immich
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/immich/postgres"
          - filesystem_uuid: "{{ btrfs_raid.uuid }}"
            filesystem_path: "{{ btrfs_raid.path }}"
            name: "/photos/immich-upload"
      become: true
    - role: any.software.immich-podman
      vars:
        immich_postgres_dir: '/data/immich/postgres'
        immich_upload_dir: '/mnt/data1/photos/immich-upload'
        immich_libraries:
          - path: '/mnt/data1/photos/jef'
            name: 'jef'
          - path: '/mnt/data1/photos/lambroek'
            name: 'lambroek'

- name: Set up Tuwunel
  hosts: emma
  tags: tuwunel
  become: true
  roles:
    - role: any.common.btrfs-subvolumes
      vars:
        subvolumes:
          - filesystem_uuid: "{{ btrfs_nvme.uuid }}"
            filesystem_path: "{{ btrfs_nvme.path }}"
            name: "/@rootfs/data/matrix-tuwunel/data"
    - role: any.software.tuwunel
      vars:
        tuwunel_data_dir: '/data/matrix-tuwunel/data'
