FROM debian:stable-slim

# Install tini for proper init process signal handling
RUN apt-get update && \
    apt-get install -y curl ca-certificates python3 xz-utils tini && \
    rm -rf /var/lib/apt/lists/*

# Create user
RUN useradd -m -s /bin/bash nixuser
RUN mkdir -m 0755 /nix && chown nixuser /nix

USER nixuser
ENV USER=nixuser
ENV NIX_INSTALLER_NO_MODIFY_PROFILE=1

# Install Nix
RUN curl -L https://nixos.org/nix/install -o /tmp/install-nix.sh \
    && sh /tmp/install-nix.sh --no-daemon \
    && rm /tmp/install-nix.sh

# Enable flakes
RUN mkdir -p /home/nixuser/.config/nix && \
    echo 'experimental-features = nix-command flakes' > /home/nixuser/.config/nix/nix.conf

ENV NIX_PATH=/home/nixuser/.nix-profile/etc/nix
ENV PATH=/home/nixuser/.nix-profile/bin:$PATH

WORKDIR /app
COPY --chown=nixuser:nixuser server.py /app/server.py

EXPOSE 8080

# Use Tini as entrypoint to handle signals/zombies correctly
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["python3", "/app/server.py"]
