#syntax=docker/dockerfile:1

FROM ghcr.io/linuxserver/baseimage-ubuntu:noble

# set version label
ARG BUILD_DATE
ARG VERSION
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="thelamer"

# environment settings
ARG DEBIAN_FRONTEND="noninteractive"
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility"
ENV MALLOC_TRIM_THRESHOLD_=131072
ENV ATTACHED_DEVICES_PERMS="/dev/dri /dev/dvb /dev/vchiq /dev/vc-mem /dev/video1? -type c"

RUN \
  echo "**** install dependencies *****" && \
  apt-get update && \
  apt-get install -y --no-install-recommends \
    at \
    libjemalloc2 \
    mesa-va-drivers \
    xmlstarlet \
    curl && \
  echo "**** dynamically resolve latest deb URLs *****" && \
  BASE_REPO_URL="https://repo.jellyfin.org/files/server/ubuntu/latest-preview/amd64" && \
  # Fetch latest server deb filename for ubu2404
  SERVER_DEB=$(curl -sL "${BASE_REPO_URL}/" | grep -oP 'jellyfin-server_[^"]+ubu2404_amd64\.deb' | head -n 1) && \
  # Fetch latest web UI deb filename
  WEB_DEB=$(curl -sL "${BASE_REPO_URL}/" | grep -oP 'jellyfin-web_[^"]+all\.deb' | head -n 1) && \
  # Fetch latest jellyfin-ffmpeg release download URL for noble amd64 via GitHub API
  FFMPEG_URL=$(curl -sL "https://api.github.com/repos/jellyfin/jellyfin-ffmpeg/releases/latest" | grep -oP 'https://[^\"]+jellyfin-ffmpeg[^\"]+noble_amd64\.deb' | head -n 1) && \
  echo "**** download custom jellyfin debs *****" && \
  curl -o /tmp/jellyfin-server.deb -L "${BASE_REPO_URL}/${SERVER_DEB}" && \
  curl -o /tmp/jellyfin-web.deb -L "${BASE_REPO_URL}/${WEB_DEB}" && \
  curl -o /tmp/jellyfin-ffmpeg.deb -L "${FFMPEG_URL}" && \
  echo "**** install custom jellyfin debs *****" && \
  # Install them all at once to resolve dependencies cleanly
  apt-get install -y \
    /tmp/jellyfin-ffmpeg.deb \
    /tmp/jellyfin-server.deb \
    /tmp/jellyfin-web.deb && \
  echo "**** cleanup ****" && \
  rm -rf \
    /tmp/* \
    /var/lib/apt/lists/* \
    /var/tmp/*

# add local files
#COPY root/ /