phiboard/firmware/setup-zmk.sh
2025-08-30 05:14:33 +02:00

52 lines
1.8 KiB
Bash
Executable file

#! /usr/bin/env bash
# clean up any existing containers or volumes
# ignore errors if they do not exist
docker container stop zmk-devcontainer || true
docker container rm zmk-devcontainer || true
docker volume rm zmk-config || true
if [ -d ./zmk ]; then
echo zmk directory already exists, removing it...
sudo rm -rf zmk
fi
git clone https://github.com/zmkfirmware/zmk.git
# add naming the docker container and run it
cp zmk/.devcontainer/devcontainer.json zmk/.devcontainer/devcontainer.json.bak
sed -i 's#"runArgs": \["--security-opt", "label=disable"\],#"runArgs": \["--security-opt", "label=disable", "--name", "zmk-devcontainer"\],#g' zmk/.devcontainer/devcontainer.json
docker volume create --driver local -o o=bind -o type=none -o device="$(pwd)/zmk-config" zmk-config
devcontainer up --workspace-folder ./zmk
devcontainer exec --workspace-folder ./zmk west init -l ./app/
devcontainer exec --workspace-folder ./zmk west update
# create a build scripts for the zmk app
echo "
#! /bin/bash
echo doing a clean build...
(
rm -rf build/
cd app/
echo == building left half ==
west build -p -d build/left -b seeeduino_xiao_ble -- -DSHIELD=phiboard_left -DZMK_CONFIG="/workspaces/zmk-config"
echo == building right half ==
west build -p -d build/right -b seeeduino_xiao_ble -- -DSHIELD=phiboard_right -DZMK_CONFIG="/workspaces/zmk-config"
echo
echo == clean build completed ==
echo future builds can be done with the --cached option
)
" > zmk/phiboard-build.sh
chmod +x zmk/phiboard-build.sh
echo "
#! /bin/bash
echo doing a successive build...
(
cd app/
echo == building left half ==
west build -d build/left
echo == building right half ==
west build -d build/right
)
" > zmk/phiboard-build-cached.sh
chmod +x zmk/phiboard-build-cached.sh