# ---- builder: compile Go (static) -------------------------------------------
FROM --platform=$BUILDPLATFORM golang:1.23-alpine AS builder

WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download

COPY . .
ARG TARGETOS=linux
ARG TARGETARCH
ENV CGO_ENABLED=0
RUN GOOS=$TARGETOS GOARCH=$TARGETARCH \
    go build -ldflags="-s -w" -o /out/iptvsim .

# ---- final: Raspberry Pi OS + FFmpeg (HW accel) -----------------------------
FROM ghcr.io/dtcooper/raspberrypi-os:bookworm

# FFmpeg + tools from RPi OS repos (includes v4l2 m2m/request bits)
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
      ffmpeg v4l-utils libdrm2 ca-certificates && \
    rm -rf /var/lib/apt/lists/*


    # Non-root user that can access /dev/video*
RUN useradd -m -u 1000 -s /bin/bash app && \
    usermod -aG video app 
    # && \
    # usermod -aG render app

# Fix: Set proper permissions on video devices at runtime
RUN echo 'app ALL=(ALL) NOPASSWD: /bin/chmod' >> /etc/sudoers.d/app || true

# App
COPY --from=builder /out/iptvsim /usr/local/bin/iptvsim
WORKDIR /work
EXPOSE 8080
USER app

ENTRYPOINT ["/usr/local/bin/iptvsim"]
