This is a boilerplate application which can be forked to start a new project for the Ledger Nano S/X.
The app-builder docker image from this repository contains all needed tools and library to build and load an application. You can download it from the ghcr.io docker repository:
sudo docker pull ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-fullYou can then enter this development environment by executing the following command from the directory of the application git repository:
sudo docker run --rm -ti --user "$(id -u)":"$(id -g)" -v "$(realpath .):/app" ghcr.io/ledgerhq/ledger-app-builder/ledger-app-builder-fullThe application's code will be available from inside the docker container, you can proceed to the following compilation steps to build your app.
Be sure to have your environment correctly set up (see Getting Started) and ledgerblue and installed.
If you want to benefit from vscode integration, it's recommended to move the toolchain in /opt and set BOLOS_ENV environment variable as follows
BOLOS_ENV=/opt/bolos-devenvand do the same with BOLOS_SDK environment variable
BOLOS_SDK=/opt/nanos-secure-sdkmake DEBUG=1 # compile optionally with PRINTF
make load # load the app on the Nano using ledgerblueHigh level documentation such as APDU, commands and transaction serialization are included in developer documentation which can be generated with doxygen
doxygen .doxygen/Doxyfilethe process outputs HTML and LaTeX documentations in doc/html and doc/latex folders.
The flow processed in GitHub Actions is the following:
- Code formatting with clang-format
- Compilation of the application for Ledger Nano S in ledger-app-builder
- Unit tests of C functions with cmocka (see unit-tests/)
- End-to-end tests with Speculos emulator (see tests/)
- Code coverage with gcov/lcov and upload to codecov.io
- Documentation generation with doxygen
It outputs 4 artifacts:
boilerplate-app-debugwithin output files of the compilation process in debug modespeculos-logwithin APDU command/response when executing end-to-end testscode-coveragewithin HTML details of code coveragedocumentationwithin HTML auto-generated documentation
If so, This boilerplate will help you get started.
For a smooth and quick integration:
- See the developers’ documentation on the Developer Portal, and
- Go on Discord to chat with developer support and the developer community.