diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..516b3c59 --- /dev/null +++ b/Dockerfile @@ -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 diff --git a/build.sh b/build.sh new file mode 100755 index 00000000..c51c5a85 --- /dev/null +++ b/build.sh @@ -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"