FROM ubuntu:jammy-20260509 AS builder
WORKDIR /src
# Copy source
COPY . .
# Build dependencies
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends build-essential \
&& rm -rf /var/lib/apt/lists/*
# Build from source
RUN make -j$(nproc)
FROM ubuntu:jammy-20260509 AS runtime
WORKDIR /opt/keyd
# Install runtime dependencies (include bash for test compatibility)
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends bash ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Make sh point to bash for compatibility with pipefail in smoke tests
RUN ln -sf /bin/bash /bin/sh
# Copy built binary from the builder stage
COPY --from=builder /src/bin/keyd /usr/local/bin/keyd
# Prepare runtime directories and keyd data
RUN mkdir -p /etc/keyd /usr/local/share/keyd /var/run
# Include data files (man pages, extensions, etc.) in the runtime image
COPY --from=builder /src/data /usr/local/share/keyd
COPY --from=builder /src/layouts /usr/local/share/keyd/layouts
# Default command: show version by default, but allow override
ENTRYPOINT ["/usr/local/bin/keyd"]
CMD ["-v"]