-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathDockerfile.alpine
45 lines (36 loc) · 1.74 KB
/
Dockerfile.alpine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
FROM alpine:edge as builder
# Bootstraps a full NixOS container by building Nix and compiling the config.
# The result is a fully featured NixOS container image.
RUN \
apk add --update --no-cache \
alpine-sdk sudo curl bash git autoconf automake sqlite-dev curl-dev xz-dev \
bison flex libtool autoconf-archive boost-dev openssl-dev bzip2-dev \
libedit-dev libseccomp-dev jq libarchive-dev gc-dev gtest-dev nlohmann-json \
linux-headers bsd-compat-headers docbook-xml docbook-xsl libsodium-dev
# nyx nyx nyx nyx nyx!
RUN \
addgroup nixbld && \
adduser -D --home /home/builder --shell /bin/bash --ingroup nixbld builder && \
echo "builder ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/builder && \
chmod 600 /etc/sudoers.d/builder && \
mkdir -p /home/builder/sys-config /home/builder/scripts && \
chown -R builder /home/builder
ADD ./nix-setup.sh ./editline-setup.sh ./lowdown-setup.sh /home/builder/scripts/
RUN \
chmod +x /home/builder/scripts/* && \
chown -R builder /home/builder && \
sudo -u builder bash -e -c "cd /home/builder && bash ./scripts/editline-setup.sh"
RUN sudo -u builder bash -e -c "cd /home/builder && bash ./scripts/lowdown-setup.sh"
RUN sudo -u builder bash -e -c "cd /home/builder && bash ./scripts/nix-setup.sh"
ADD nixpkgs-setup.sh /home/builder/scripts/
RUN sudo -u builder bash -e -c "cd /home/builder && bash ./scripts/nixpkgs-setup.sh"
ADD nixos-setup.sh default.nix configuration.nix /home/builder/sys-config/
RUN \
mkdir -p /sys-root && \
sudo -u builder bash -e -c "cd /home/builder/sys-config && bash ./nixos-setup.sh" && \
tar -C /sys-root -xf /home/builder/sys-config/result.tar.xz && \
rm /home/builder/sys-config/result.tar.xz
FROM scratch
WORKDIR /
COPY --from=builder /sys-root/ /
ENTRYPOINT ["/init"]