coder/dogfood/Dockerfile.nix

43 lines
1.4 KiB
Nix

# Build stage
FROM nixos/nix:2.19.2 as nix
# enable --experimental-features 'nix-command flakes' globally
# nix does not enable these features by default these are required to run commands like
# nix develop -c 'some command' or to use falke.nix
RUN mkdir -p /etc/nix && \
echo "experimental-features = nix-command flakes" >> /etc/nix/nix.conf
# Copy Nix flake and install dependencies
COPY flake.* /app/
RUN nix profile install "/app#all" --priority 4 && \
rm -rf /app && \
nix-collect-garbage -d
# Final image
FROM codercom/enterprise-base:latest as final
# Set the non-root user
USER root
# Copy the Nix related files into the Docker image
COPY --from=nix --chown=coder:coder /nix /nix
COPY --from=nix /etc/nix /etc/nix
COPY --from=nix --chown=coder:coder /root/.nix-profile /home/coder/.nix-profile
COPY --from=nix /etc/passwd /etc/passwd.nix
COPY --from=nix /etc/group /etc/group.nix
# Merge the passwd and group files
# We need all nix users and groups to be available in the final image
RUN cat /etc/passwd.nix >> /etc/passwd && \
cat /etc/group.nix >> /etc/group && \
rm /etc/passwd.nix /etc/group.nix
# Set environment variables and PATH
ENV PATH=/home/coder/.nix-profile/bin:/nix/var/nix/profiles/default/bin:/nix/var/nix/profiles/default/sbin:$PATH \
GOPRIVATE="coder.com,cdr.dev,go.coder.com,github.com/cdr,github.com/coder" \
NODE_OPTIONS="--max-old-space-size=8192"
# Set the user to 'coder'
USER coder
WORKDIR /home/coder