Skip to content

logos-co/logos-package-manager-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logos Package Manager Module

Building with Nix (Recommended)

Outputs

  • .#lib: builds the plugin library (package_manager_plugin.{dylib|so}) — dev build (selects -dev LGX 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 both lib/ and include/

Build the module

nix build

Or build specific outputs:

nix build .#lib
nix build .#logos-package-manager-include
nix build .#default

Enter development shell

nix develop

Build manually in development shell

nix develop
mkdir build && cd build
cmake -GNinja ..
ninja

Building with CMake

If 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 \
  ..
ninja

Generated headers

When 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-include

Command-Line Interface (lgpm)

The package manager includes a CLI tool for searching and installing packages.

Building the CLI

With Nix:

nix build .#cli
./result/bin/lgpm --help

With CMake (in development shell):

nix develop
mkdir build && cd build
cmake -GNinja ..
ninja lgpm
./bin/lgpm --help

Commands

Search packages

lgpm search <query>

Search packages by name or description.

List packages

lgpm list [--category <cat>] [--installed]

List all available packages. Optionally filter by category or show only installed packages.

Install packages

lgpm install <package> [packages...]

Install one or more packages. Dependencies are resolved automatically.

List categories

lgpm categories

List all available package categories.

Show package info

lgpm info <package>

Display detailed information about a specific package.

Global Options

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

Examples

# 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 --json

Dev vs Portable Builds

The package manager supports two build modes controlled by the LGPM_PORTABLE_BUILD CMake flag:

  • Dev build (default): Selects LGX variants with -dev suffix (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.

Variant File

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).

Dependencies

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors