39 lines
1.6 KiB
Docker
39 lines
1.6 KiB
Docker
# syntax=docker/dockerfile:1
|
|
FROM nixos/nix:2.30.2
|
|
|
|
ARG NIXPKGS_REV=e5bdc4a41d4c072fe1e3787eaa0320a384741d44
|
|
ARG QSMCP_REV=76b1b008f0352064121af9334065012e31d80fc2
|
|
|
|
ENV NIX_CONFIG="experimental-features = nix-command flakes" \
|
|
PATH="/nix/var/nix/profiles/default/bin:${PATH}"
|
|
|
|
RUN nix profile install --profile /nix/var/nix/profiles/default \
|
|
"github:NixOS/nixpkgs/${NIXPKGS_REV}#quickshell" \
|
|
"github:NixOS/nixpkgs/${NIXPKGS_REV}#nodejs_22"
|
|
|
|
RUN mkdir -p /opt/qsmcp \
|
|
&& git init /opt/qsmcp \
|
|
&& git -C /opt/qsmcp remote add origin https://github.com/fedsfarm/qsmcp.git \
|
|
&& git -C /opt/qsmcp fetch --depth 1 origin "${QSMCP_REV}" \
|
|
&& git -C /opt/qsmcp checkout --detach FETCH_HEAD \
|
|
&& test "$(git -C /opt/qsmcp rev-parse HEAD)" = "${QSMCP_REV}" \
|
|
&& cd /opt/qsmcp \
|
|
&& npm ci --omit=dev \
|
|
&& rm -rf /opt/qsmcp/.git
|
|
|
|
# qsmcp's CLI hard-codes a 1568px safety cap. Desktop bar previews need their
|
|
# true target width so responsive layout and text collisions are testable.
|
|
RUN node -e 'const fs=require("fs"); const p="/opt/qsmcp/src/index.ts"; const s=fs.readFileSync(p,"utf8"); const old="max_dimension: 1568"; if (!s.includes(old)) throw new Error("qsmcp max_dimension source changed"); fs.writeFileSync(p,s.replace(old,"max_dimension: 4096"))'
|
|
|
|
ENV QSMCP_SHELL_ROOT=/workspace/quickshell \
|
|
QSMCP_QS_BIN=/nix/var/nix/profiles/default/bin/qs \
|
|
QT_QUICK_BACKEND=software
|
|
|
|
COPY entrypoint.sh /usr/local/bin/quickshell-preview
|
|
RUN chmod +x /usr/local/bin/quickshell-preview
|
|
|
|
RUN mkdir -p /workspace/quickshell
|
|
WORKDIR /workspace/quickshell
|
|
|
|
ENTRYPOINT ["/usr/local/bin/quickshell-preview"]
|