FROM rust:1.86.0-alpine3.21
RUN apk add appstream pkgconf abuild build-base musl-dbg polkit-dev openssl-dev \
    glib-dev valgrind curl meson clang-dev alpine-appstream-downloader \
    dbus bash meson zstd-dev sudo shadow

RUN wget https://gitlab.alpinelinux.org/alpine/apk-tools/-/archive/acae571db2b902c0b3cd68317392a661d52246e5/apk-tools-acae571db2b902c0b3cd68317392a661d52246e5.tar.gz \
    && tar xf apk-tools-acae571db2b902c0b3cd68317392a661d52246e5.tar.gz \
    && cd apk-tools-acae571db2b902c0b3cd68317392a661d52246e5 \
    && meson setup build \
    && ninja -C build install \
    && cd .. \
    && rm -r apk-tools-acae571db2b902c0b3cd68317392a661d52246e5 apk-tools-acae571db2b902c0b3cd68317392a661d52246e5.tar.gz

RUN rustup component add llvm-tools-preview clippy rustfmt
RUN cargo install cargo-llvm-cov
RUN cargo install cargo-valgrind

RUN  /usr/sbin/useradd -d /builds -g users -M -N builder \
  && echo 'builder ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

USER builder