.#lib: builds the plugin library (package_manager_plugin.{dylib|so}) — dev build (selects-devLGX variants).#lib-portable: builds the plugin library — portable build (selects portable LGX variants).#logos-package-manager-include: generates C/C++ headers from the built plugin.#cli: builds the command-line tool (lgpm) — dev build.#cli-portable: builds the CLI — portable build.#cli-bundle-dir: bundled portable CLI (self-contained directory).#default: combined output exposing bothlib/andinclude/
nix buildOr build specific outputs:
nix build .#lib
nix build .#logos-package-manager-include
nix build .#defaultnix developnix develop
mkdir build && cd build
cmake -GNinja ..
ninjaIf you don't want to use Nix, you can build directly with CMake:
mkdir build && cd build
cmake -GNinja \
-DLOGOS_CPP_SDK_ROOT=/path/to/logos-cpp-sdk \
-DLOGOS_LIBLOGOS_ROOT=/path/to/logos-liblogos \
..
ninjaWhen building via Nix, headers are generated by logos-cpp-generator from the
compiled plugin (package_manager_plugin.{dylib,so}) and installed under
$out/include. The include-only derivation can be built with:
nix build .#logos-package-manager-includeThe package manager includes a CLI tool for searching and installing packages.
With Nix:
nix build .#cli
./result/bin/lgpm --helpWith CMake (in development shell):
nix develop
mkdir build && cd build
cmake -GNinja ..
ninja lgpm
./bin/lgpm --helplgpm search <query>Search packages by name or description.
lgpm list [--category <cat>] [--installed]List all available packages. Optionally filter by category or show only installed packages.
lgpm install <package> [packages...]Install one or more packages. Dependencies are resolved automatically.
lgpm categoriesList all available package categories.
lgpm info <package>Display detailed information about a specific package.
| Option | Description |
|---|---|
--modules-dir <path> |
Set core modules installation directory |
--ui-plugins-dir <path> |
Set UI plugins installation directory |
--release <tag> |
GitHub release tag to use (default: latest) |
--json |
Output results in JSON format |
-h, --help |
Show help message |
-v, --version |
Show version information |
# Search for waku-related packages
lgpm search waku
# List all packages in JSON format
lgpm list --json
# List only installed packages
lgpm list --installed
# Install a package (with automatic dependency resolution)
lgpm install waku-module
# Install multiple packages
lgpm install waku-module nwaku-module
# Get detailed info about a package
lgpm info waku-module
# Install to a custom directory
lgpm --modules-dir /path/to/modules install waku-module
# Install from a specific release instead of "latest"
lgpm --release v2.1.0 install waku-module
# List packages available in a specific release
lgpm --release v2.1.0 list --jsonThe package manager supports two build modes controlled by the LGPM_PORTABLE_BUILD CMake flag:
- Dev build (default): Selects LGX variants with
-devsuffix (e.g.,linux-amd64-dev). Used in Nix/development environments where libraries resolve from/nix/store. - Portable build (
-DLGPM_PORTABLE_BUILD=ON): Selects portable LGX variants without suffix (e.g.,linux-amd64). Used in self-contained distributed applications.
This is a compile-time choice with no fallback — a dev build will reject packages that only contain portable variants, and vice versa.
When a package is installed, a variant text file is written to the module's installation subdirectory containing the name of the installed variant (e.g., linux-amd64-dev).
- logos-cpp-sdk - Logos C++ SDK and code generator
- logos-liblogos - Logos core library
- logos-package - LGX package format library
- Qt6 (Core and Network)