39 lines
1.7 KiB
Docker
39 lines
1.7 KiB
Docker
# Guix build environment for building `guix system docker-image` images
|
|
# from this repo on a machine (e.g. macOS) that can't run Guix natively.
|
|
#
|
|
# Guix state lives under /gnu and /var/guix, which the compose file mounts
|
|
# as named volumes so pulls/builds are cached across container runs. This
|
|
# image only bakes in the *initial* binary install; everything built via
|
|
# `guix pull` / `guix system` happens at `docker run` time against those
|
|
# volumes.
|
|
FROM debian:bookworm-slim
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
bash gnupg dirmngr wget ca-certificates xz-utils tar locales procps sudo netbase \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& sed -i '/en_US.UTF-8/s/^# //' /etc/locale.gen \
|
|
&& locale-gen
|
|
|
|
# Official installer: extracts the binary tarball to /gnu and /var/guix,
|
|
# creates the guixbuild group/users, and (since no init system is present
|
|
# in the container) prints instructions to run guix-daemon manually, which
|
|
# entrypoint.sh does. `yes ''` answers every prompt with its default,
|
|
# which includes authorizing the ci.guix.gnu.org / bordeaux substitute
|
|
# servers so builds don't compile everything from source.
|
|
RUN wget -O /tmp/guix-install.sh https://guix.gnu.org/guix-install.sh \
|
|
&& chmod +x /tmp/guix-install.sh \
|
|
&& yes '' | /tmp/guix-install.sh \
|
|
&& rm -f /tmp/guix-install.sh \
|
|
&& test -x /root/.config/guix/current/bin/guix
|
|
|
|
ENV PATH="/root/.config/guix/current/bin:/usr/local/bin:${PATH}" \
|
|
GUIX_LOCPATH="/root/.config/guix/current/lib/locale" \
|
|
LANG="en_US.UTF-8"
|
|
|
|
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
|
RUN chmod +x /usr/local/bin/entrypoint.sh
|
|
|
|
WORKDIR /workspace
|
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
|
CMD ["bash"]
|