| 123456789101112131415161718192021222324252627282930313233343536373839 |
- # sm121 HA add-on image — THIN: bakes in the Rust toolchain; the
- # entrypoint compiles sm121 from the launcher repo on first boot (cached
- # in the add-on's data folder). The Pi IS the build host: always the right
- # arch, the binary never goes stale, and the image carries no sm121
- # binary at all (specs/tech-architecture/ha-addon-recipe-repos.md —
- # "build on ha.lan" variant for HAOS, which has no Docker).
- #
- # make addon-image # context = docker-images/sm121-addon/
- # scripts/smoke-addon.sh
- #
- # The image is arch-generic EXCEPT the baked rustup toolchain (built for
- # the build host's arch — build it on an aarch64 host for the Pi; a
- # multi-arch buildx push covers x86_64 HA hosts too).
- FROM debian:bookworm-slim
- # git (launcher-repo fetch + recipe-repo sync) + jq (env → config) +
- # ca-certs (https) + gcc/libc6-dev (ring's C backend, via russh)
- RUN apt-get update \
- && apt-get install -y --no-install-recommends \
- git ca-certificates jq curl gcc libc6-dev \
- && rm -rf /var/lib/apt/lists/*
- # Rust toolchain, pinned (edition 2024 + let-chains need rust ≥ 1.88; the
- # launcher's Cargo.toml pins the exact version). `minimal` profile — no
- # docs/rustfmt/clippy (the Pi only builds, never lints).
- ENV RUSTUP_HOME=/usr/local/rustup \
- CARGO_HOME=/usr/local/cargo \
- PATH=/usr/local/cargo/bin:$PATH
- RUN curl -sSf https://sh.rustup.rs \
- | sh -s -- -y --profile minimal --default-toolchain 1.98.1 \
- && rustup toolchain list
- COPY entrypoint.sh /entrypoint.sh
- RUN chmod 755 /entrypoint.sh
- ENV SM121_WEB_PORT=3100
- EXPOSE 3100
- ENTRYPOINT ["/entrypoint.sh"]
|