This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Infinitime

InfiniTime firmware fork with a text watchface and Pomodoro app

This InfiniTime firmware fork adds a text watchface and a Pomodoro app. The repository packages the pinned firmware source and its build dependencies.

  • Extra Watchface: Text
  • Extra app: Pomodoro
  • C++, embedded

The root workspace declares the pinned firmware with use_repo_rule in include.MODULE.bazel, preserving recursive Git submodules and the CMake toolchain patch. Firmware source is fetched when referenced, rather than during module resolution. The Python tooling manifest and native uv.lock live in this project; npm and SDK archives retain their upstream pins. Python and Node runtimes use the root workspace toolchains. The standard pip extension reads the local uv.lock without fetching firmware. The project re-exports npm with a separate extension identity so unrelated npm targets do not fetch firmware to read its upstream lockfile. bazel mod deps deliberately evaluates all extensions and can still fetch it.

native_uv.patch removes the upstream source’s pip-tools lock target. This project owns the effective Python dependencies in pyproject.toml; update them with //projects/infinitime:uv_lock.update using the shared uv workflow. Explicit lock generation uses sandboxed uv lock and requires network access to PyPI. Firmware builds consume the checked-in native lock without running resolution.

Validate the firmware with bazel test //projects/infinitime:build_test.

  • Install Gadgetbridge
  • Download the firmware:
    oras pull docker.io/alwaldend/src:projects_infinitime_pinetime_mcuboot_app_dfu_1_15_0_zip_head
    
  • Pair the watch in Gadgetbridge
  • Install the firmware

1 - Releases

Releases

1.1 - head

Release head