ARG BUILD_FROM=ghcr.io/home-assistant/base-python:3.14-alpine3.22-2026.03.1
FROM ${BUILD_FROM}

ENV \
    S6_SERVICES_GRACETIME=10000 \
    SUPERVISOR_API=http://localhost \
    CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1 \
    UV_SYSTEM_PYTHON=true

# Install base
WORKDIR /usr/src
RUN \
    set -x \
    && apk add --no-cache \
        findutils \
        eudev \
        eudev-libs \
        git \
        libffi \
        libpulse \
        musl \
        openssl \
        yaml \
    \
    && pip3 install uv==0.10.9

# Install requirements
RUN \
    --mount=type=bind,source=./requirements.txt,target=/usr/src/requirements.txt \
    --mount=type=bind,source=./wheels,target=/usr/src/wheels \
    if ls /usr/src/wheels/musllinux/* >/dev/null 2>&1; then \
        LOCAL_WHEELS=/usr/src/wheels/musllinux; \
        echo "Using local wheels from: $LOCAL_WHEELS"; \
    else \
        LOCAL_WHEELS=; \
        echo "No local wheels found"; \
    fi && \
    uv pip install --compile-bytecode --no-cache --no-build \
        -r requirements.txt \
        ${LOCAL_WHEELS:+--find-links $LOCAL_WHEELS}

# Install Home Assistant Supervisor
ARG BUILD_VERSION="9999.09.9.dev9999"
COPY . supervisor
RUN \
    sed -i "s/^SUPERVISOR_VERSION =.*/SUPERVISOR_VERSION = \"${BUILD_VERSION}\"/g" /usr/src/supervisor/supervisor/const.py \
    && uv pip install --no-cache -e ./supervisor \
    && python3 -m compileall ./supervisor/supervisor


WORKDIR /
COPY rootfs /

LABEL \
    io.hass.type="supervisor" \
    org.opencontainers.image.title="Home Assistant Supervisor" \
    org.opencontainers.image.description="Container-based system for managing Home Assistant Core installation" \
    org.opencontainers.image.authors="The Home Assistant Authors" \
    org.opencontainers.image.url="https://www.home-assistant.io/" \
    org.opencontainers.image.documentation="https://www.home-assistant.io/docs/" \
    org.opencontainers.image.licenses="Apache License 2.0"
