Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jonahbron/micropython-builder
A Nix flake for building MicroPython
https://github.com/jonahbron/micropython-builder
Last synced: 3 months ago
JSON representation
A Nix flake for building MicroPython
- Host: GitHub
- URL: https://github.com/jonahbron/micropython-builder
- Owner: jonahbron
- License: mit
- Created: 2024-03-25T01:34:59.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-04-29T07:07:09.000Z (6 months ago)
- Last Synced: 2024-04-29T08:27:00.062Z (6 months ago)
- Language: Nix
- Size: 42 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-micropython - micropython-builder - Tool for building and flashing a custom MicroPython firmware. (Development / Firmware)
README
# MicroPython Builder
This is a flake that knows how to build and flash MicroPython. It can either
be invoked directly to build a basic firmware, or it can be used as an input
flake and be used as a tool to build a custom firmware.```bash
nix run github:jonahbron/micropython-builder#flash-esp32c3-generic
```> [!WARNING]
> Because a network connection is currently _required_ to build firmware for
> ESP32 devices, flashing directly from the terminal will only work on non-x86_64
> systems. You must create your own flake with your own sha256.
>
> [Builds fail without Internet access (IDFGH-12120) (PACMAN-808) #54][esp-idf]See [examples](./examples) directory or a [real project][usage] for how to use
this builder in your own flake. The examples are also a flake and can be run
directly.```bash
nix build ./examples#
```## Currently Supported Ports/Boards
> [!NOTE]
> Contributions of other MicroPython ports/boards are extremely welcome!- [x] [ESP32][esp32]
- [x] [ESP32_GENERIC_C3][esp32c3-generic]## TODO
- [x] Flake package that can be run like `nix build .#esp32c3-generic`
- [x] Default output is firmware.bin
- [ ] Other output portions can be accessed too `nix build .#esp32GenericC3.bootloader`
- [x] Flake package that can be run like `nix run .#flash-esp32-generic`
- [x] Flake library that can be called like `buildMicroPythonFirmware`
- [x] Allows specifying the port/board
- [x] Accepts arguments pointing to manifest.py
- [x] Accepts arguments pointing to user_c_modules
- [x] Allow patch phase script
- [ ] Allow overriding the micropython source
- [ ] Allow overriding the micropython-lib source
- [x] Flake library that can be called like `flashMicroPythonFirmware`
- [x] Make interface more ergonomic, require less knowledge
- [ ] Make fixed-output derivations optional
- [ ] Factor out common ESP32 expressions
- [ ] Allow generating firmware with LittleFS partitions/other partition table customizations
- [ ] Add nix formatter
- [ ] Flake template
- [ ] GitHub Action that attempts to regularly update dependencies
- [ ] Contribute into nixpkgs?[esp-idf]: https://github.com/espressif/idf-component-manager/issues/54
[usage]: https://git.sr.ht/~jonahbron/doorbell/tree/17a3b500eadaea10a203baa3f078df4f40ce0f45/item/firmware.nix
[esp32]: https://github.com/micropython/micropython/tree/master/ports/esp32
[esp32c3-generic]: https://github.com/micropython/micropython/tree/master/ports/esp32/boards/ESP32_GENERIC_C3