Skip to content

Commit

Permalink
Add a Dockerfile that allows efficient local builds
Browse files Browse the repository at this point in the history
The Dockerfile essentially builds a docker image by downloading
moergo-sc/zmk and the current main branch of
moergo-sc/glove80-zmk-config, and then building the latter to warm up
the image's nix store.

When running the image, very little gets downloaded, and the image
just builds glove80.uf2 and copies it back to the current
directory.

The provided `build.sh` script both builds and runs the docker image,
calling docker with the appropriate arguments.
  • Loading branch information
lpenz committed Oct 7, 2023
1 parent 46fb85a commit 529d642
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
28 changes: 28 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM nixpkgs/nix

ENV PATH=/root/.nix-profile/bin:/usr/bin:/bin

RUN set -e -x; \
nix-env -iA cachix -f https://cachix.org/api/v1/install; \
cachix use moergo-glove80-zmk-dev; \
mkdir -p /glove80-zmk-config/config; \
git clone -b main https://github.com/moergo-sc/zmk /glove80-zmk-config/src; \
: Pre-build zmk to populate the nix store with the dependencies; \
cd /glove80-zmk-config/src; \
nix-shell --run true --attr zmk .

RUN set -e -x; \
(\
echo '#!/bin/bash'; \
echo 'DST=$PWD'; \
echo 'set -e -x'; \
echo 'cp -v config/* /glove80-zmk-config/config'; \
echo 'cd /glove80-zmk-config'; \
echo 'nix-build config -o combined'; \
echo 'cp -v combined/glove80.uf2 "$DST/glove80.uf2"'; \
echo 'chown "$UID:$GID" "$DST/glove80.uf2"'; \
) > entrypoint.sh; \
chmod a+x entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

# Run build.sh to use this file
8 changes: 8 additions & 0 deletions build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/bash

IMAGE=glove80

set -e -x

docker build -t "$IMAGE" .
docker run --rm -v "$PWD:$PWD" -w "$PWD" -e UID="$(id -u)" -e GID="$(id -g)" "$IMAGE"

0 comments on commit 529d642

Please sign in to comment.