# Shared storage configuration
x-shared-storage: &shared_data_volume
  type: bind
  source: /mnt/omnissiah-vault/data/media-manager
  target: /data
  bind:
    create_host_path: true

# Service-specific volume configurations
x-volume-configs:
  jellyseerr: &jellyseerr_volumes
    - type: bind
      source: /mnt/omnissiah-vault/configs/jellyseerr
      target: /app/config
      bind:
        create_host_path: true

  prowlarr: &prowlarr_volumes
    - type: bind
      source: /mnt/omnissiah-vault/configs/prowlarr
      target: /config
      bind:
        create_host_path: true
    - <<: *shared_data_volume

  sonarr: &sonarr_volumes
    - type: bind
      source: /mnt/omnissiah-vault/configs/sonarr
      target: /config
      bind:
        create_host_path: true
    - <<: *shared_data_volume

  radarr: &radarr_volumes
    - type: bind
      source: /mnt/omnissiah-vault/configs/radarr
      target: /config
      bind:
        create_host_path: true
    - <<: *shared_data_volume

  bazarr: &bazarr_volumes
    - type: bind
      source: /mnt/omnissiah-vault/configs/bazarr
      target: /config
      bind:
        create_host_path: true
    - <<: *shared_data_volume

services:
  jellyseerr:
    image: fallenbagel/jellyseerr:latest
    container_name: jellyseerr
    ports: ["5055:5055"]
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes: *jellyseerr_volumes
    networks:
      - media-net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: ["CMD", "wget", "-qO-", "http://localhost:5055"]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    ports: ["9696:9696"]
    volumes: *prowlarr_volumes
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - media-net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:9696" ]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    ports: ["8989:8989"]
    volumes: *sonarr_volumes
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - media-net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8989" ]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    ports: ["7878:7878"]
    volumes: *radarr_volumes
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - media-net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:7878" ]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

  bazarr:
    image: lscr.io/linuxserver/bazarr:latest
    container_name: bazarr
    ports: ["6767:6767"]
    volumes: *bazarr_volumes
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    networks:
      - media-net
    depends_on:
      - sonarr
      - radarr
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:6767" ]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

  ombi:
    image: lscr.io/linuxserver/ombi:latest
    container_name: ombi
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    volumes:
      - /mnt/omnissiah-vault/configs/ombi:/config
    ports: ["3579:3579"]
    networks:
      - media-net
    extra_hosts:
      - "host.docker.internal:host-gateway"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:3579" ]
      interval: 1m
      retries: 3
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8

networks:
  media-net:
    driver: bridge
    labels:
      - "com.media-stack.network=main"
      - "com.media-stack.description=Primary network for *arr stack communication with IPv6"
