2.1 KiB

Logos Blockchain Module

A Logos core module that wraps the logos-blockchain C bindings and ships the zk circuit binaries needed at runtime.

Built with logos-module-builder: flake.nix, CMakeLists.txt, and metadata.json are the only build-system files. The module-builder's mkLogosModule pulls the prebuilt logos-blockchain-c derivation (lib + header) in via externalLibInputs; the circuits directory is staged separately in preConfigure / postInstall because it's runtime data rather than a library.

Build and inspect

# In the workspace (preferred):
ws build logos-blockchain-module
ws build logos-blockchain-module --auto-local   # pick up local dep overrides

# Inspect the built plugin
lm ./result/lib/liblogos_blockchain_module_plugin.so

# Standalone
nix build                              # -> result/lib/<plugin>.so + result/lib/circuits/
nix develop                            # cmake/ninja iteration

Files

  • flake.nixmkLogosModule call + circuits staging
  • CMakeLists.txt — single logos_module() macro + C++20 bump
  • metadata.json — module identity, deps, and nix.external_libraries
  • src/ — plugin sources (Q_OBJECT + Q_INVOKABLE API)

Troubleshooting

Nix + IDE Integration

If your IDE reports that a file doesn't belong to the project or that files cannot be found, the CMake cache is likely missing the Nix-provided paths. This happens when the IDE runs CMake on its own, outside the Nix environment, leaving LOGOS_CPP_SDK_ROOT / LOGOS_MODULE_BUILDER_ROOT unset.

To fix it:

  1. Regenerate the cache from within the Nix shell — this provides the required Nix paths and writes them into build/CMakeCache.txt:

    nix develop -c cmake -B build -GNinja
    
  2. Reload the CMake project without resetting the cache. On RustRover: open the CMake tool window (View → Tool Windows → CMake) and click Reload (↺). Resetting the cache would wipe the paths you just wrote.