diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0501870 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +# Build artifacts +result +result-* +lm +lm-cli +logos +pm +modules/ +plugins/ + +# Compiled libraries (keep sources, ignore build outputs) +logos-calc-module/lib/libcalc.so +logos-calc-module/lib/libcalc.dylib diff --git a/logos-calc-cpp-ui/flake.nix b/logos-calc-cpp-ui/flake.nix index 2e75f00..1c92725 100644 --- a/logos-calc-cpp-ui/flake.nix +++ b/logos-calc-cpp-ui/flake.nix @@ -2,8 +2,8 @@ description = "Calculator C++ UI plugin for Logos - widget frontend for calc_module"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; - calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; + calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"; }; outputs = inputs@{ logos-module-builder, calc_module, ... }: diff --git a/logos-calc-module/flake.nix b/logos-calc-module/flake.nix index 0451b40..fbabc5a 100644 --- a/logos-calc-module/flake.nix +++ b/logos-calc-module/flake.nix @@ -2,7 +2,7 @@ description = "Calculator module - wraps libcalc C library for Logos"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; }; outputs = inputs@{ logos-module-builder, ... }: diff --git a/logos-calc-ui/flake.nix b/logos-calc-ui/flake.nix index 85bd4e4..d64f727 100644 --- a/logos-calc-ui/flake.nix +++ b/logos-calc-ui/flake.nix @@ -2,8 +2,8 @@ description = "Calculator QML UI Plugin for Logos - frontend for calc_module"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; - calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; + calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"; }; outputs = inputs@{ logos-module-builder, ... }: diff --git a/logos-developer-guide.md b/logos-developer-guide.md index bdc6c9e..c9620f4 100644 --- a/logos-developer-guide.md +++ b/logos-developer-guide.md @@ -131,16 +131,16 @@ The fastest way to create a new module is using the **logos-module-builder** tem mkdir logos-my-module && cd logos-my-module # Scaffold a minimal core module (no external dependencies) -nix flake init -t github:logos-co/logos-module-builder +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b # Or scaffold a module that wraps an external C/C++ library -nix flake init -t github:logos-co/logos-module-builder#with-external-lib +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b#with-external-lib # For UI modules (C++ Qt widget with logos-standalone-app runner) -nix flake init -t github:logos-co/logos-module-builder#ui-module +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b#ui-module # For QML UI modules (with logos-standalone-app runner) -nix flake init -t github:logos-co/logos-module-builder#ui-qml-module +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b#ui-qml-module ``` **Available templates:** @@ -296,7 +296,7 @@ The **`lm`** tool (from `logos-module`) lets you inspect compiled module binarie #### Building lm ```bash -nix build 'github:logos-co/logos-module#lm' --out-link ./lm +nix build 'github:logos-co/logos-module/337223f2a72710d8052ca750510cd25d33e05047#lm' --out-link ./lm ``` #### Viewing Metadata @@ -363,7 +363,7 @@ The **logos-module-viewer** is a graphical tool for inspecting loaded modules. ```bash # Build the viewer -nix build 'github:logos-co/logos-module-viewer#app' --out-link ./logos-viewer +nix build 'github:logos-co/logos-module-viewer/b6489c1aab8c1590fa127dbaedb39708f3614fbc#app' --out-link ./logos-viewer # Run it with your module ./logos-viewer/bin/logos-module-viewer -m ./result/lib/my_module_plugin.so @@ -412,18 +412,16 @@ nix build .#lgx # Portable variant (self-contained, all dependencies bundled) nix build .#lgx-portable -# Dual variant (both dev and portable in one .lgx file) -nix build .#lgx-dual ``` This produces a `my_module-.lgx` file in the `result/` directory. -This works because `logos-module-builder` includes `nix-bundle-lgx` as its own dependency and `mkLogosModule` automatically creates the `lgx`, `lgx-portable`, and `lgx-dual` package outputs. No extra configuration is needed — it is part of the standard module template: +This works because `logos-module-builder` includes `nix-bundle-lgx` as its own dependency and `mkLogosModule` automatically creates the `lgx` and `lgx-portable` package outputs. No extra configuration is needed — it is part of the standard module template: ```nix { inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; }; outputs = inputs@{ logos-module-builder, ... }: @@ -437,17 +435,17 @@ This works because `logos-module-builder` includes `nix-bundle-lgx` as its own d #### Using `nix bundle` (Alternative) -You can also create `.lgx` packages using the `nix bundle` command directly. This is useful if your module does not use `logos-module-builder` or if you need the `dual` bundling mode (both dev and portable in a single `.lgx` file): +You can also create `.lgx` packages using the `nix bundle` command directly. This is useful if your module does not use `logos-module-builder`, or if you need the `dual` bundling mode (both dev and portable in a single `.lgx` file) which is only available via the `nix bundle` command: ```bash # Dev variant -nix bundle --bundler github:logos-co/nix-bundle-lgx .#lib +nix bundle --bundler github:logos-co/nix-bundle-lgx/9d6f9016c865b9d2793672bc3c45a50b59753c78 .#lib # Portable variant -nix bundle --bundler github:logos-co/nix-bundle-lgx#portable .#lib +nix bundle --bundler github:logos-co/nix-bundle-lgx/9d6f9016c865b9d2793672bc3c45a50b59753c78#portable .#lib # Dual variant (both dev and portable in one .lgx file) -nix bundle --bundler github:logos-co/nix-bundle-lgx#dual .#lib +nix bundle --bundler github:logos-co/nix-bundle-lgx/9d6f9016c865b9d2793672bc3c45a50b59753c78#dual .#lib ``` This produces a `my_module-.lgx` file in the current directory. @@ -458,7 +456,7 @@ This produces a `my_module-.lgx` file in the current directory. |------|-----------------|---------------------|----------------|----------| | **Dev** | `nix build .#lgx` | `nix bundle --bundler ...#default .#lib` | `darwin-arm64-dev` | Local development (requires Nix store) | | **Portable** | `nix build .#lgx-portable` | `nix bundle --bundler ...#portable .#lib` | `darwin-arm64` | Distribution (self-contained, no Nix needed) | -| **Dual** | `nix build .#lgx-dual` | `nix bundle --bundler ...#dual .#lib` | Both dev and portable | One package for both environments | +| **Dual** | *(not available as built-in)* | `nix bundle --bundler ...#dual .#lib` | Both dev and portable | One package for both environments | **Variant naming:** @@ -482,38 +480,25 @@ The **`lgpm`** CLI (Logos Package Manager) installs, searches, and manages modul #### Building lgpm ```bash -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./package-manager +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./package-manager ``` #### Commands +`lgpm` manages **locally-available** `.lgx` packages. It does not download packages from the network — use `lgpd` (logos-package-downloader) for that. + ```bash -# Search for packages -./package-manager/bin/lgpm search waku - -# List all available packages -./package-manager/bin/lgpm list - -# List only installed packages -./package-manager/bin/lgpm list --installed - -# List packages in a category -./package-manager/bin/lgpm list --category networking - -# Show package details -./package-manager/bin/lgpm info my_module - -# List available categories -./package-manager/bin/lgpm categories - -# Install a package (with dependency resolution) -./package-manager/bin/lgpm --modules-dir ./modules install my_module - -# Install multiple packages -./package-manager/bin/lgpm --modules-dir ./modules install my_module another_module - # Install from a local .lgx file ./package-manager/bin/lgpm --modules-dir ./modules install --file ./my_module.lgx + +# Install all .lgx files in a directory +./package-manager/bin/lgpm --modules-dir ./modules install --dir ./packages/ + +# List installed packages +./package-manager/bin/lgpm --modules-dir ./modules list + +# Show installed package details +./package-manager/bin/lgpm --modules-dir ./modules info my_module ``` #### Global Options @@ -522,7 +507,6 @@ nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./packag |--------|-------------| | `--modules-dir ` | Target directory for installed core modules | | `--ui-plugins-dir ` | Target directory for UI plugins | -| `--release ` | GitHub release tag to use (default: `latest`) | | `--json` | Output in JSON format | | `-h, --help` | Show help | @@ -543,21 +527,31 @@ modules/ └── variant ``` -### 4.3 Installing from a Registry +### 4.3 Downloading and Installing from a Registry + +To download packages from the online catalog and then install them locally, use `lgpd` (logos-package-downloader) followed by `lgpm`: ```bash -# Install a published package (lgpm fetches from GitHub Releases) -./package-manager/bin/lgpm --modules-dir ./modules install my_module +# Build lgpd +nix build 'github:logos-co/logos-package-downloader/fb3b8c48fed5323ea6a4f4195462dc8d84d1e77f#cli' --out-link ./downloader -# Install from a specific release -./package-manager/bin/lgpm --modules-dir ./modules --release v2.0.0 install my_module +# Search for packages +./downloader/bin/lgpd search waku + +# List all available packages +./downloader/bin/lgpd list + +# Download a package +./downloader/bin/lgpd download my_module -o ./packages/ + +# Download from a specific release +./downloader/bin/lgpd --release v2.0.0 download my_module -o ./packages/ + +# Install the downloaded package locally +./package-manager/bin/lgpm --modules-dir ./modules install --file ./packages/my_module.lgx ``` -The package manager automatically: -1. Resolves transitive dependencies -2. Downloads the correct platform variant for your OS/architecture -3. Extracts the LGX package -4. Copies the library to the target directory +`lgpd` handles the network side (browsing, searching, downloading), while `lgpm` handles local installation. --- @@ -572,7 +566,7 @@ The **`logoscore`** CLI (from `logos-liblogos`) is a headless runtime that can l #### Building logoscore ```bash -nix build 'github:logos-co/logos-logoscore-cli' --out-link ./logos +nix build 'github:logos-co/logos-logoscore-cli/ce3884cce83f0706916c1af2a44f0775386c0ec4' --out-link ./logos ``` #### Daemon Mode @@ -674,18 +668,18 @@ logos-basecamp produces two binary variants: ```bash # Build the development version -nix build 'github:logos-co/logos-basecamp#app' --out-link ./logos-basecamp +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe#app' --out-link ./logos-basecamp # Run the dev binary ./logos-basecamp/bin/logos-basecamp # Build the portable/distributed version -nix build 'github:logos-co/logos-basecamp#portable' --out-link ./logos-basecamp-portable +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe#portable' --out-link ./logos-basecamp-portable # Or build platform-specific distributions: -nix build 'github:logos-co/logos-basecamp#bin-bundle-dir' # Flat directory bundle -nix build 'github:logos-co/logos-basecamp#bin-appimage' # Linux AppImage -nix build 'github:logos-co/logos-basecamp#bin-macos-app' # macOS .app bundle +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe#bin-bundle-dir' # Flat directory bundle +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe#bin-appimage' # Linux AppImage +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe#bin-macos-app' # macOS .app bundle ``` > **Note:** When installing modules into logos-basecamp, the LGX variant type must match the build type. Dev builds of basecamp expect **dev** LGX variants (e.g., `darwin-arm64-dev`), while portable builds expect **portable** variants (e.g., `darwin-arm64`). Use the `dual` bundler (see [3.2](#32-bundling-with-nix-bundle-lgx)) to produce packages that work with both. @@ -780,7 +774,7 @@ The generator is bundled with `logos-cpp-sdk`. It is automatically available: - **In `nix develop`** -- the module dev shell includes the SDK on PATH - **Build it directly:** ```bash - nix build 'github:logos-co/logos-cpp-sdk#cpp-generator' --out-link ./cpp-gen + nix build 'github:logos-co/logos-cpp-sdk/d633575677a3d19a8bf1d5ff687398dace532938#cpp-generator' --out-link ./cpp-gen ./cpp-gen/bin/logos-cpp-generator --help ``` @@ -984,12 +978,11 @@ logos-cpp-generator --metadata --general-only [--output-dir /dev/null \ || printf '\x89PNG\r\n\x1a\n' > icons/calc.png ``` -> **Naming convention:** Each entry in `dependencies` must match the `name` field in that module's own `metadata.json`. When adding a dependency as a flake input, the **input attribute name** must also match — e.g., `calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"`. The URL can point to any repo, but the attribute name is how the builder resolves dependencies. +> **Naming convention:** Each entry in `dependencies` must match the `name` field in that module's own `metadata.json`. When adding a dependency as a flake input, the **input attribute name** must also match — e.g., `calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"`. The URL can point to any repo, but the attribute name is how the builder resolves dependencies. --- @@ -594,8 +594,8 @@ Since `metadata.json` declares `"type": "ui"`, `mkLogosModule` automatically wir description = "Calculator C++ UI plugin for Logos - widget frontend for calc_module"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; - calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; + calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"; }; outputs = inputs@{ logos-module-builder, calc_module, ... }: @@ -623,7 +623,7 @@ nix build --override-input calc_module path:../logos-calc-module Inspect the output with `lm` (the module inspector from `logos-module`): ```bash -nix build 'github:logos-co/logos-module#cli' --out-link ./lm-cli +nix build 'github:logos-co/logos-module/337223f2a72710d8052ca750510cd25d33e05047#cli' --out-link ./lm-cli ./lm-cli/bin/lm ./result/lib/calc_ui_cpp_plugin.dylib ``` @@ -644,7 +644,7 @@ The widget opens. No backend connected yet, so button clicks will silently retur The `capability_module` is loaded automatically by the standalone app. You only need to install `calc_module`: ```bash -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm mkdir -p modules # Bundle and install calc_module (from Part 1) @@ -665,11 +665,13 @@ nix run . --override-input calc_module path:../logos-calc-module -- --modules-di ```bash # Package calc_module (from Part 1) cd ../logos-calc-module -nix build '.#lgx-dual' +nix build '.#lgx' +nix build '.#lgx-portable' # Package the C++ UI plugin cd ../logos-calc-ui-cpp -nix build '.#lgx-dual' +nix build '.#lgx' +nix build '.#lgx-portable' ``` > For more bundling options (standalone bundler syntax, cross-platform packaging), see the [Developer Guide — Bundling with nix-bundle-lgx](logos-developer-guide.md#32-bundling-with-nix-bundle-lgx). @@ -682,7 +684,7 @@ Build logos-basecamp, launch it once to preinstall its bundled modules, then ins ```bash # Build logos-basecamp -nix build 'github:logos-co/logos-basecamp' -o basecamp-result +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe' -o basecamp-result # Launch once to preinstall bundled modules, then close it ./basecamp-result/bin/logos-basecamp @@ -704,7 +706,7 @@ Install your modules using `lgpm` (substitute `BASECAMP_DIR` with the actual pat ```bash # Build lgpm CLI -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm # Install core module ./pm/bin/lgpm --modules-dir BASECAMP_DIR/modules \ diff --git a/tutorial-qml-ui-app.md b/tutorial-qml-ui-app.md index f3cd388..24078ec 100644 --- a/tutorial-qml-ui-app.md +++ b/tutorial-qml-ui-app.md @@ -48,7 +48,7 @@ Use the QML module template from `logos-module-builder`: ```bash mkdir logos-calc-ui && cd logos-calc-ui -nix flake init -t github:logos-co/logos-module-builder#ui-qml-module +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b#ui-qml-module git init && git add -A ``` @@ -82,7 +82,7 @@ Replace the template contents with your plugin's details: The `dependencies` field tells the host to load `calc_module` before showing your UI. -> **Naming convention:** Each entry in `dependencies` must match the `name` field in that module's own `metadata.json`. When adding a dependency as a flake input, the **input attribute name** must also match the dependency name — e.g., `calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"`. The URL can point to any repo, but the attribute name is how the builder resolves dependencies. +> **Naming convention:** Each entry in `dependencies` must match the `name` field in that module's own `metadata.json`. When adding a dependency as a flake input, the **input attribute name** must also match the dependency name — e.g., `calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"`. The URL can point to any repo, but the attribute name is how the builder resolves dependencies. --- @@ -231,8 +231,8 @@ The template already has everything wired up. Update the description and add `ca description = "Calculator QML UI Plugin for Logos - frontend for calc_module"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; - calc_module.url = "github:logos-co/logos-tutorial?dir=logos-calc-module"; # must match dependency name in metadata.json + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; + calc_module.url = "github:logos-co/logos-tutorial/tutorial-v1?dir=logos-calc-module"; # must match dependency name in metadata.json }; outputs = inputs@{ logos-module-builder, ... }: @@ -264,7 +264,7 @@ The app opens immediately. No modules are loaded, so clicking buttons shows "Log To test actual calls to `calc_module`, you need a modules directory with `calc_module` installed via `lgpm`. The `capability_module` is loaded automatically by the standalone app. Do this once: ```bash -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm mkdir -p modules # Bundle and install calc_module (from Part 1) @@ -329,16 +329,18 @@ Available theme tokens via `Theme.palette`: ### 7.1 Bundle as LGX packages -Create `.lgx` packages using the dual variant (includes both dev and portable variants, so they work with any basecamp build): +Create `.lgx` packages for both dev and portable variants: ```bash # Package calc_module (from Part 1) cd ../logos-calc-module -nix build '.#lgx-dual' +nix build '.#lgx' +nix build '.#lgx-portable' # Package the QML UI plugin cd ../logos-calc-ui -nix build '.#lgx-dual' +nix build '.#lgx' +nix build '.#lgx-portable' ``` > For more bundling options (standalone bundler syntax, cross-platform packaging), see the [Developer Guide — Bundling with nix-bundle-lgx](logos-developer-guide.md#32-bundling-with-nix-bundle-lgx). @@ -351,7 +353,7 @@ Build logos-basecamp, launch it once to preinstall its bundled modules, then ins ```bash # Build logos-basecamp -nix build 'github:logos-co/logos-basecamp' -o basecamp-result +nix build 'github:logos-co/logos-basecamp/70169584a44d954f638e34842bcfebf741e6bcfe' -o basecamp-result # Launch once to preinstall bundled modules, then close it ./basecamp-result/bin/logos-basecamp @@ -373,7 +375,7 @@ Install your modules using `lgpm` (substitute `BASECAMP_DIR` with the actual pat ```bash # Build lgpm CLI -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm # Install core module ./pm/bin/lgpm --modules-dir BASECAMP_DIR/modules \ diff --git a/tutorial-wrapping-c-library.md b/tutorial-wrapping-c-library.md index 88c0703..ffc5fea 100644 --- a/tutorial-wrapping-c-library.md +++ b/tutorial-wrapping-c-library.md @@ -32,10 +32,10 @@ Before writing any C code, scaffold the Logos module project using the official ```bash # For a module that wraps an external C library: mkdir logos-calc-module && cd logos-calc-module -nix flake init -t github:logos-co/logos-module-builder#with-external-lib +nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b#with-external-lib # Or for a plain module (no external library): -# nix flake init -t github:logos-co/logos-module-builder +# nix flake init -t github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b ``` This generates the skeleton files (`flake.nix`, `metadata.json`, `CMakeLists.txt`, etc.) pre-configured for the logos-module-builder. You then customize them for your specific library. @@ -295,7 +295,7 @@ The `if/elseif/else` block above it is boilerplate — don't change it. description = "Calculator module - wraps libcalc C library for Logos"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; }; outputs = inputs@{ logos-module-builder, ... }: @@ -542,7 +542,7 @@ Both library files are placed together so the plugin can find the C library at r The `lm` CLI tool (from `logos-module`) inspects compiled module binaries: ```bash -nix build 'github:logos-co/logos-module#lm' --out-link ./lm +nix build 'github:logos-co/logos-module/337223f2a72710d8052ca750510cd25d33e05047#lm' --out-link ./lm ``` ### 4.2 View metadata @@ -650,7 +650,7 @@ For scripting and CI, use `--json`: ### 5.1 Build logoscore ```bash -nix build 'github:logos-co/logos-logoscore-cli' --out-link ./logos +nix build 'github:logos-co/logos-logoscore-cli/ce3884cce83f0706916c1af2a44f0775386c0ec4' --out-link ./logos ``` ### 5.2 Set up the modules directory @@ -662,7 +662,7 @@ nix build 'github:logos-co/logos-logoscore-cli' --out-link ./logos nix build '.#lgx' # Install it into a modules directory using the Logos Package Manager -nix build 'github:logos-co/logos-package-manager#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm mkdir -p modules ./pm/bin/lgpm --modules-dir ./modules install --file result/*.lgx ``` @@ -736,10 +736,11 @@ nix build '.#lgx-portable' Portable LGX packages are fully self-contained with no `/nix/store` references at runtime. These are the packages used by the Logos App Package Manager UI and published to [logos-modules](https://github.com/logos-co/logos-modules) releases. -To create a **dual** package containing both dev and portable variants (works with any basecamp build): +To create both dev and portable variants (the dev variant works with local `nix build` of basecamp; the portable variant works with standalone basecamp builds): ```bash -nix build '.#lgx-dual' +nix build '.#lgx' +nix build '.#lgx-portable' ``` > For more bundling options (standalone bundler syntax, cross-platform packaging), see the [Developer Guide — Bundling with nix-bundle-lgx](logos-developer-guide.md#32-bundling-with-nix-bundle-lgx). @@ -747,7 +748,7 @@ nix build '.#lgx-dual' To install a portable package on another machine: ```bash -nix build 'github:logos-co/logos-package-manager-module#cli' --out-link ./pm +nix build 'github:logos-co/logos-package-manager/e5c25989861f4487c3dc8c7b3bc0062bcbc3221f#cli' --out-link ./pm ./pm/bin/lgpm --modules-dir ./modules install --file calc_module.lgx ``` @@ -862,7 +863,7 @@ Instead of pre-building the library and placing it in `lib/`, you can have Nix f description = "Module wrapping libfoo from GitHub"; inputs = { - logos-module-builder.url = "github:logos-co/logos-module-builder"; + logos-module-builder.url = "github:logos-co/logos-module-builder/b6cf87d30e2995e023496fcfc7f06e8127c6ac5b"; # Fetch the library source (non-flake) libfoo-src = {