# learnprog sandbox: the box every learner program and shell session runs in.
# Rootless podman, no network at run time, small resource limits (see learnprog/sandbox.py).
FROM docker.io/library/debian:trixie-slim

ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8
# slim images strip man pages; learners need them
RUN rm -f /etc/dpkg/dpkg.cfg.d/docker \
    && apt-get update && apt-get install -y --no-install-recommends \
        bash bash-completion coreutils findutils grep sed gawk diffutils patch \
        less nano vim-tiny file procps psmisc tree man-db manpages manpages-dev \
        util-linux bsdextrautils jq bc tar gzip bzip2 xz-utils zip unzip \
        python3 python3-venv \
        gcc libc6-dev make gdb valgrind \
        rustc cargo \
        ca-certificates \
    && apt-get install -y --reinstall --no-install-recommends \
        bash coreutils findutils grep sed tar gzip passwd util-linux procps dash \
        diffutils login libc-bin debianutils hostname \
    && mandb -q \
    && rm -rf /var/lib/apt/lists/* \
    && useradd -m -u 1000 -s /bin/bash learner \
    && mkdir -p /work && chown learner:learner /work

COPY bashrc /etc/skel/.bashrc
COPY bashrc /home/learner/.bashrc
RUN chown learner:learner /home/learner/.bashrc

USER learner
WORKDIR /work
CMD ["/bin/bash", "-l"]
