Files
Dario LipicarandClaude Opus 5 a18b084c05 chore: pin the handshake-surface landing (4 repos) (#99)
* chore: pin the handshake-surface landing (4 repos)

  logos-protocol           362b03fb -> c1b0a0f5  (#42 token-only handshake surface
                                                  published before a module's
                                                  initializer, + trust-anchor fallback,
                                                  owner-thread marshal, negative cache)
  logos-qt-sdk             af767b7e -> 60d7a083  (#28 publish before init; seed the
                                                  trust anchor before it goes live)
  logos-module-builder     5a400e30 -> e9c8da45  (#189 carries both to every module)
  logos-capability-module  390486e2 -> f18b9b15  (#22 3s bound on the token push)

Fixes the ui-host startup wedge: capability_module had to acquire a target's
replica to push it a token, while the target was itself blocked in a synchronous
requestModule back to capability. ui-host then missed the standalone app's hard
10s readiness deadline and was SIGKILLed before either 20s acquire expired.

Measured on a native Linux host against the real wallet-ui app bundle:

  sequential, unloaded          5/20 -> 0/20   p = 0.024
  interleaved (arm+order)       5/46 -> 0/46   p = 0.028
  protocol+qt-sdk ALONE         6/25 -> 0/25   p = 0.011
  pooled, exact stratified     10/66 -> 0/66   p = 0.00066

plus the full 26-action wallet-ui e2e doctest. Honest scope: greatly reduces, not
eliminates -- 0/66 admits a residual up to ~4.4%, on one host. CPU contention
SUPPRESSED the race (baseline 0/14 loaded), so "constrained CI hardware is worse"
has no established sign; the 2-core runner where this was first reported is untested.

Both the lock and the submodule gitlinks are bumped: the doctest jobs pin each
submodule to its gitlink, so a lock-only bump would leave them testing the old code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* chore: pin logos-cpp-sdk to 198f031 alongside qt-sdk

The first push failed six doctest jobs with

  qt-generator/lidl_gen_qt_consumer.cpp: error: 'fieldIsOptional' was not declared
  qt-generator/lidl_gen_qt_consumer.cpp: error: 'optionalValueType' was not declared

qt-sdk 60d7a083 carries 3604188 ("optional PARAMETERS on every Qt surface"),
whose generator needs those helpers from logos-cpp-sdk's LIDL frontend. The
workspace pinned cpp-sdk 3d322bd3 -- an ANCESTOR of the 198f031 that qt-sdk
itself pins -- and forces it into qt-sdk via `follows`, so the generator could
not compile. Nothing to do with the handshake surface: this re-pin is simply
the first change to move qt-sdk past that commit.

Pinned to 198f031 rather than cpp-sdk master: that is exactly the revision
qt-sdk 60d7a083 was built and tested against, so it is the narrowest fix.
fieldIsOptional is present in 5 files there and in 0 at 3d322bd3.

Verified locally: `nix build .#logos-capability-module` succeeds with zero
generator symbol errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* chore: bump the logos-lidl submodule to 35f33d8 (matches cpp-sdk 198f031)

The cpp-sdk bump traded one skew for its mirror image. CI then failed with

  share/lidl-frontend/lidl_compat.h: error: 'paramValueType' was not declared
  share/lidl-frontend/lidl_compat.h: error: 'fieldValueType' was not declared

i.e. cpp-sdk 198f031's LIDL frontend needs a NEWER logos-lidl than it was
getting. Why it only bites in CI: the doctest jobs run
`--override-input logos-module-builder/logos-cpp-sdk <ws pin>`, and CI is on
install-nix-action@v27 = Nix 2.22, which is BELOW the 2.26 threshold where an
overridden input starts being resolved from its own lock. So cpp-sdk's own
logos-lidl pin is ignored and lidl comes from the parent's stale lock. Locally
(Nix 2.34.6) the child lock is honoured, which is exactly why the same build
passed here and failed there.

logos-lidl is not a flake input of the workspace, but it IS a submodule, and the
--workspace-pins map is built from submodule gitlinks -- so bumping the gitlink
is what puts lidl into the override set. 8c95d4f (2026-06-16) -> 35f33d8
(2026-07-31, lidl master tip, and the rev both cpp-sdk 198f031 and qt-sdk
60d7a083 pin). Strictly an upgrade; 8c95d4f is an ancestor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* chore: pin logos-cpp-sdk to dfd46282, not 198f031

Correcting my own earlier pin. I chose 198f031 to "match exactly what qt-sdk
was tested against, the narrowest fix". That rev is the one with a gap: it has
fieldIsOptional (which fixed the first failure) but PREDATES f3369fa, the commit
that added logos_async_result.h. So it traded one skew for another.

That produced the basecamp failure, whose full include chain -- visible only in
a local repro, CI truncated 22k lines -- is

  src/PackageCoordinator.cpp:22
    -> src/generated_code/logos_sdk.h:6
      -> src/generated_code/package_downloader_api.h:14
        -> #include "logos_async_result.h"    <- absent at 198f031

  rev         fieldIsOptional   logos_async_result.h
  3d322bd3    no                no      (the workspace's original; basecamp built)
  198f031     YES               NO      (my pin; basecamp broke)
  dfd46282    YES               YES     (cpp-sdk master, and what module-builder pins)

Verified by controlled test, cpp-sdk the ONLY variable: basecamp d68173f7 with
CI's exact 22 workspace-pin overrides fails on 198f031 and builds (EXIT=0, zero
logos_async_result hits) on dfd46282. Bumping basecamp instead does NOT help --
basecamp master fails identically on 198f031, so this was never staleness.

Also confirmed dfd46282 does not reintroduce the generator failure: a forced
`nix build .#logos-qt-sdk--logos-qt-generator --rebuild` compiles it from source,
7 CXX steps, zero symbol errors. (An earlier pre-flight failed against dfd46282
with 'lidlCheckRecords undeclared'; that was an artifact of forcing qt-sdk#28's
UNMERGED head, based on the older cde7d42, into module-builder -- not a cpp-sdk
problem.)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 18:20:12 -03:00

530 lines
26 KiB
Nix

{
description = "Logos Workspace — unified multi-repo development environment";
# ── Inputs ─────────────────────────────────────────────────────────────────
#
# The bulk of this block is auto-generated by `ws sync-graph` from each
# repo's flake.lock. Nix's flake parser requires `inputs` to be a literal
# attrset (no `let`, `//`, `import`, or `builtins.mapAttrs` allowed), so
# the per-repo follows can't be computed at evaluation time — they must
# be written into this file directly.
#
# To regenerate after editing any repo's flake inputs:
#
# ws sync-graph
#
# URL overrides (logos-blockchain org, tutorial sub-flakes) and manual
# follows overrides live in `scripts/ws` near the top of `cmd_sync_graph`.
inputs = {
# ── Manual: shared Nix infrastructure ──────────────────────────────────
#
# logos-nix pins the workspace's nixpkgs (and therefore Qt). Overriding
# logos-nix here propagates to ALL downstream consumers via the auto-
# generated follows below.
logos-nix.url = "github:logos-co/logos-nix";
nixpkgs.follows = "logos-nix/nixpkgs";
# Pinned explicitly because logos-blockchain-module's upstream lock
# currently references an invalid commit-ish via /0.2.1.
logos-blockchain.url = "github:logos-blockchain/logos-blockchain/88941ff33f2e028591b9d0ed2549a328d54f0cfa";
# BEGIN AUTO-INPUTS — generated by `ws sync-graph`, do not edit by hand
logos-protocol = {
url = "github:logos-co/logos-protocol/c1b0a0f554cd5197a974db7d6f805fc87ff07457";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-qt-sdk = {
url = "github:logos-co/logos-qt-sdk/60d7a08313d66cae129faa104749c562106b4c72";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-cpp-sdk = {
url = "github:logos-co/logos-cpp-sdk/dfd46282a7b7d48075f890ace3a39a128e5b2576";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-view-module-runtime = {
url = "github:logos-co/logos-view-module-runtime/049978f144aa53d8b98ea2c0b164b0554c88c856";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-module-client = {
url = "github:logos-co/logos-module-client/351f282055659a9d8ccf0e6411c2683256906958";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-module = {
url = "github:logos-co/logos-module/2ec64c4a65f8966b5137cdba3a19a6498ce17b6d";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-liblogos = {
url = "github:logos-co/logos-liblogos/be221c5749036343909fa0b109edecfb4d329fdd";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-module.follows = "logos-module";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-package-manager.follows = "logos-package-manager";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.nixpkgs.follows = "nixpkgs";
inputs.process-stats.follows = "process-stats";
};
logos-logoscore-cli = {
url = "github:logos-co/logos-logoscore-cli/f4753ddc19dd9989f4a701d19d9d3c5d5934a405";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.logos-test-modules.follows = "logos-test-modules";
inputs.nix-bundle-appimage.follows = "nix-bundle-appimage";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-capability-module = {
url = "github:logos-co/logos-capability-module/f18b9b15683af260c47a4d076183af13b34cd4e7";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-package = {
url = "github:logos-co/logos-package/8d4236f9453bce8b44dfd2f85a5006af993b7ed2";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-plugin-qt = {
url = "github:logos-co/logos-plugin-qt/f33f264abb6d628cc78cf926f9f33c7cc8252151";
inputs.logos-module.follows = "logos-module";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-module-builder = {
url = "github:logos-co/logos-module-builder/e9c8da45d3cf84e4207ba22d22e23ccccb1cb59a";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-design-system.follows = "logos-design-system";
inputs.logos-module.follows = "logos-module";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-plugin-core.follows = "logos-plugin-qt";
inputs.logos-plugin-qt.follows = "logos-plugin-qt";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.logos-rust-sdk.follows = "logos-rust-sdk";
inputs.logos-standalone-app.follows = "logos-standalone-app";
inputs.logos-view-module-runtime.follows = "logos-view-module-runtime";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-bundle-dir = {
url = "github:logos-co/nix-bundle-dir/4f72d7a64dd83979d771c17161f23ebc9dbedb40";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-bundle-lgx = {
url = "github:logos-co/nix-bundle-lgx/b49074a8e1157832002b11d3d254c1aaa4b96680";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-package.follows = "logos-package";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-bundle-appimage = {
url = "github:logos-co/nix-bundle-appimage/8fcc56b5afcc313ca917cf3487be082ae2f0184c";
inputs.logos-nix.follows = "logos-nix";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-bundle-macos-app = {
url = "github:logos-co/nix-bundle-macos-app/d6b0cc518e599ab7a52258bf3e1f8123c8a01d31";
inputs.logos-nix.follows = "logos-nix";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-standalone-app = {
url = "github:logos-co/logos-standalone-app/1aa90d083c03679de1e2f0291adb818032d044fc";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-design-system.follows = "logos-design-system";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.logos-view-module-runtime.follows = "logos-view-module-runtime";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-basecamp = {
url = "github:logos-co/logos-basecamp/d68173f73ca500c4eec422f2059585735943b88d";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-design-system.follows = "logos-design-system";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-module.follows = "logos-module";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-package.follows = "logos-package";
inputs.logos-package-downloader-module.follows = "logos-package-downloader-module";
inputs.logos-package-manager.follows = "logos-package-manager";
inputs.logos-package-manager-module.follows = "logos-package-manager-module";
inputs.logos-package-manager-ui.follows = "logos-package-manager-ui";
inputs.logos-protocol.follows = "logos-protocol";
inputs.logos-qt-sdk.follows = "logos-qt-sdk";
inputs.logos-view-module-runtime.follows = "logos-view-module-runtime";
inputs.nix-bundle-appimage.follows = "nix-bundle-appimage";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nix-bundle-macos-app.follows = "nix-bundle-macos-app";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-accounts-module = {
url = "github:logos-co/logos-accounts-module/4fd4cb0be3d281b4a9b3303f892b2b265edb2a62";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-accounts-ui = {
url = "github:logos-co/logos-accounts-ui/324b2c6e0aa76ecbed3a2d2922fd16093539eb25";
inputs.accounts_module.follows = "logos-accounts-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-chat-module = {
url = "github:logos-co/logos-chat-module/33c624d0e6ea8444486d6bfe68aa07450315bdb6";
inputs.logos-delivery-module.follows = "logos-delivery-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-chat-ui = {
url = "github:logos-co/logos-chat-ui/8d6a9feaa6eef3e9714d3aed3867d20337972542";
inputs.chat_module.follows = "logos-chat-module";
inputs.logos-delivery-module.follows = "logos-delivery-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-package-manager = {
url = "github:logos-co/logos-package-manager/202af6fa0f0f4493bc59c8a609dff9326f78a18d";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-package.follows = "logos-package";
inputs.nix-bundle-appimage.follows = "nix-bundle-appimage";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-package-downloader = {
url = "github:logos-co/logos-package-downloader/6fcf682539c501e927d72393872a4f36d6b1d2a9";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-package.follows = "logos-package";
inputs.nix-bundle-appimage.follows = "nix-bundle-appimage";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-package-manager-module = {
url = "github:logos-co/logos-package-manager-module/cad6bab044d09eb54fe9a8efb20ed94694eb44ff";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logos-package-manager.follows = "logos-package-manager";
};
logos-package-downloader-module = {
url = "github:logos-co/logos-package-downloader-module/2298842e8d5e8118d2268952fb08017152b8d433";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logos-package-downloader.follows = "logos-package-downloader";
};
logos-package-manager-ui = {
url = "github:logos-co/logos-package-manager-ui/d14f284ea73e47448bebc6841612e53123c585bb";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logos-package.follows = "logos-package";
inputs.package_downloader.follows = "logos-package-downloader-module";
inputs.package_manager.follows = "logos-package-manager-module";
};
logos-storage-module = {
url = "github:logos-co/logos-storage-module/8feb7cc0f7806bc2b25faa884e1bb9076b993969";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-storage-ui = {
url = "github:logos-co/logos-storage-ui/823be657d236afe824b9804d6aee69c14b1d4507";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
inputs.storage_module.follows = "logos-storage-module";
};
logos-wallet-module = {
url = "github:logos-co/logos-wallet-module/f6f9c160410db824531f42dd8b27ccecd39ca589";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-wallet-ui = {
url = "github:logos-co/logos-wallet-ui/26f8f5bebd511e91e29019e1e7c892bd5753439d";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
inputs.wallet_module.follows = "logos-wallet-module";
};
logos-delivery-module = {
url = "github:logos-co/logos-delivery-module/3f8a0ed99afae349fec8013442638e7569ac2cf3";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
};
logos-delivery-demo = {
url = "github:logos-co/logos-delivery-demo/b5fec54843a20290fdc847762bdbc7f2d7217da1";
inputs.delivery_module.follows = "logos-delivery-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-blockchain-module = {
url = "github:logos-blockchain/logos-blockchain-module/581323e9e587a3b8057f8f63a9ade1ff1892111a";
inputs.logos-blockchain.follows = "logos-blockchain";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-blockchain-ui = {
url = "github:logos-blockchain/logos-blockchain-ui/eb513b5a79f558f5718a5ca0eafac1d5fda7d832";
inputs.blockchain_module.follows = "logos-blockchain-module";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
};
logos-execution-zone-wallet-ui = {
url = "github:logos-blockchain/logos-execution-zone-wallet-ui/da1b021db5315eccd1e39835268bbc08633adc12";
inputs.lez_core.follows = "logos-execution-zone-module";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
};
logos-execution-zone-module = {
url = "github:logos-blockchain/logos-execution-zone-module/033f807a3b1690fb2f8e661cb8067646b8a98242";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
};
logos-libp2p-module = {
url = "github:logos-co/logos-libp2p-module/7b4b776b26d96e2a0c794827c77bb6eb89da5100";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logoscore-cli.follows = "logos-logoscore-cli";
inputs.package-manager.follows = "logos-package-manager";
inputs.libp2p.url = "github:vacp2p/nim-libp2p/7c73484cc0c57a5f649dd3d277cef1c7c4de28f0";
};
logos-webview-app = {
url = "github:logos-co/logos-webview-app/b5d1bb40da6ba550076069a10cf9beaac45aa515";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.nix-bundle-lgx.follows = "nix-bundle-lgx";
};
counter_qml.url = "github:logos-co/counter_qml/8029a894f4221f9284efabbedcee7d9d18929777";
counter = {
url = "github:logos-co/counter/204ec0d3f0ccffc5d40269db9e7253cba7c330d6";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-design-system = {
url = "github:logos-co/logos-design-system/fd4978713921e087c40f4a6a52a3e5f60f6104bd";
inputs.logos-nix.follows = "logos-nix";
inputs.nix-bundle-appimage.follows = "nix-bundle-appimage";
inputs.nix-bundle-dir.follows = "nix-bundle-dir";
inputs.nix-bundle-macos-app.follows = "nix-bundle-macos-app";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-js-sdk = {
url = "github:logos-co/logos-js-sdk/6b6ccb5f10ea358ae8c9bee4264722dfb0aed76b";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-module.follows = "logos-module";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logos-module-client.follows = "logos-module-client";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-nim-sdk = {
url = "github:logos-co/logos-nim-sdk/df1f21906e661d96f5e4bda172cb9a619292b603";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-rust-sdk.url = "github:logos-co/logos-rust-sdk/be0dedad0fbef00c497e2e5e83ef03a000abcee6";
logos-logoscore-py = {
url = "github:logos-co/logos-logoscore-py/6e081b2d2fd87a909b958aa8a97be445229acf75";
inputs.logos-logoscore-cli.follows = "logos-logoscore-cli";
inputs.logos-nix.follows = "logos-nix";
inputs.logos-test-modules.follows = "logos-test-modules";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-test-modules = {
url = "github:logos-co/logos-test-modules/fb773a564d16d6a273871a8f0d118008b841a736";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-logoscore-cli.follows = "logos-logoscore-cli";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
process-stats = {
url = "github:logos-co/process-stats/33ace1270f90c89b3565e803139c0970fcd1ce8f";
inputs.logos-nix.follows = "logos-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-module-viewer = {
url = "github:logos-co/logos-module-viewer/b6489c1aab8c1590fa127dbaedb39708f3614fbc";
inputs.logos-capability-module.follows = "logos-capability-module";
inputs.logos-cpp-sdk.follows = "logos-cpp-sdk";
inputs.logos-liblogos.follows = "logos-liblogos";
inputs.logos-package-manager.follows = "logos-package-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
logos-evm-net-proxy.url = "github:logos-co/logos-evm-net-proxy/564a730551b677ff8292144c3773a46d99a18b91";
logos-evm-keystore-module = {
url = "github:logos-co/logos-evm-keystore-module/1ac386973acf568b48bb52f7e17baf302fa55670";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-evm-eth-rpc-module = {
url = "github:logos-co/logos-evm-eth-rpc-module/8a825cdbf0b78de4af30b6250e91b08d2e1ba1d7";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-evm-token-list-module = {
url = "github:logos-co/logos-evm-token-list-module/25d5d6b2a96987bb2a757a0348c150baeb675e3b";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-evm-uniswap-module = {
url = "github:logos-co/logos-evm-uniswap-module/df069a7eab47d705eb3b519092a5e41e85ddd7f1";
inputs.eth_rpc_module.follows = "logos-evm-eth-rpc-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-evm-railgun-module = {
url = "github:logos-co/logos-evm-railgun-module/b6d066932c62791c8be5b9a7344318d8df9a6156";
inputs.eth_rpc_module.follows = "logos-evm-eth-rpc-module";
inputs.keystore_module.follows = "logos-evm-keystore-module";
inputs.logos-module-builder.follows = "logos-module-builder";
};
logos-evm-wallet-backend-module = {
url = "github:logos-co/logos-evm-wallet-backend-module/584dbfe3195ec6dfe4c0d8b91fabb02ac2d963f4";
inputs.eth_rpc_module.follows = "logos-evm-eth-rpc-module";
inputs.keystore_module.follows = "logos-evm-keystore-module";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.railgun_module.follows = "logos-evm-railgun-module";
inputs.token_list_module.follows = "logos-evm-token-list-module";
inputs.uniswap_module.follows = "logos-evm-uniswap-module";
};
logos-evm-wallet-ui = {
url = "github:logos-co/logos-evm-wallet-ui/68f7c4fe6005990dea38de67d6853d12d9045872";
inputs.eth_rpc_module.follows = "logos-evm-eth-rpc-module";
inputs.keystore_module.follows = "logos-evm-keystore-module";
inputs.logos-module-builder.follows = "logos-module-builder";
inputs.railgun_module.follows = "logos-evm-railgun-module";
inputs.token_list_module.follows = "logos-evm-token-list-module";
inputs.uniswap_module.follows = "logos-evm-uniswap-module";
inputs.wallet_backend_module.follows = "logos-evm-wallet-backend-module";
};
# END AUTO-INPUTS
};
outputs = { self, nixpkgs, ... }@inputs:
let
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
forAllSystems = fn: nixpkgs.lib.genAttrs systems fn;
depGraph = import ./nix/dep-graph.nix;
# Every logos flake input we iterate over for packages/apps/checks.
# Excludes `logos-nix` (it's a nixpkgs pin, not a buildable repo).
repoInputNames = builtins.attrNames
(builtins.removeAttrs depGraph [ "logos-nix" ]);
# Mapping from flake input name → submodule directory name under repos/.
# Only entries where the names differ need to be listed.
inputToDirOverrides = {
"logos-calc-module" = "logos-tutorial/logos-calc-module";
"logos-calc-ui" = "logos-tutorial/logos-calc-ui";
"logos-calc-ui-cpp" = "logos-tutorial/logos-calc-ui-cpp";
};
inputToDir = name: inputToDirOverrides.${name} or name;
in {
# ── Packages ──────────────────────────────────────────────────────────
# nix build .#logos-cpp-sdk → default package
# nix build .#logos-basecamp → default package
# nix build .#logos-basecamp--portable → non-default output
# nix build .#logos-liblogos--portable
# nix bundle --bundler .#nix-bundle-lgx .#logos-chat-module--lib
# All repo package outputs are exposed: default as the repo name,
# non-default as <repo>--<output>.
packages = forAllSystems (system:
let
# Collect all package outputs from all repos.
# Each repo's packages are forwarded lazily — the value is not
# evaluated until someone actually builds it, so broken store
# paths or missing files won't cause errors at evaluation time.
allPkgs = builtins.foldl' (acc: name:
let
repoPkgs = (inputs.${name}.packages.${system} or {});
outNames = builtins.attrNames repoPkgs;
in
acc // builtins.listToAttrs (map (outName:
let
attrName = if outName == "default" then name else "${name}--${outName}";
in
{ name = attrName; value = repoPkgs.${outName}; }
) outNames)
) {} repoInputNames;
in allPkgs
);
# ── Apps ──────────────────────────────────────────────────────────────
# nix run .#logos-standalone-app -- --plugin ./result/lib/
# Forwards apps outputs from all repos. Default app exposed as repo name,
# non-default as <repo>--<output>.
apps = forAllSystems (system:
builtins.foldl' (acc: name:
let
repoApps = (inputs.${name}.apps.${system} or {});
outNames = builtins.attrNames repoApps;
in
acc // builtins.listToAttrs (map (outName:
let
attrName = if outName == "default" then name else "${name}--${outName}";
in
{ name = attrName; value = repoApps.${outName}; }
) outNames)
) {} repoInputNames
);
# ── Dev Shells ────────────────────────────────────────────────────────
# nix develop → workspace shell (ws CLI + common tools)
# nix develop .#logos-cpp-sdk → that repo's own devShell
# nix develop → workspace shell with ws CLI + common tools
# For sub-repo devShells use: nix develop path:./repos/<repo-name>
# or: ws develop <repo-name>
devShells = forAllSystems (system:
let
pkgs = import nixpkgs { inherit system; };
# Always delegates to the live scripts/ws in the workspace,
# without needing to rebuild the devshell. Falls back to the
# flake directory if LOGOS_WORKSPACE_ROOT is not set.
wsScript = pkgs.writeShellScriptBin "ws" ''
exec "''${LOGOS_WORKSPACE_ROOT:-${builtins.toString ./.}}/scripts/ws" "$@"
'';
in {
default = import ./nix/devshell.nix { inherit pkgs wsScript; };
}
);
# ── Checks ────────────────────────────────────────────────────────────
# nix flake check → run ALL repo checks
# nix build .#checks.x86_64-linux.logos-cpp-sdk--test
checks = forAllSystems (system:
builtins.foldl' (acc: name:
let
result = builtins.tryEval (inputs.${name}.checks.${system} or {});
repoChecks = if result.success then result.value else {};
prefixed = nixpkgs.lib.mapAttrs'
(cname: drv: { name = "${name}--${cname}"; value = drv; })
repoChecks;
in
acc // prefixed
) {} repoInputNames
);
# ── Bundlers ──────────────────────────────────────────────────────────
# Forwards nix-bundle-lgx bundlers so scripts can use "$WORKSPACE_ROOT"
# as the --bundler reference.
bundlers = forAllSystems (system:
inputs.nix-bundle-lgx.bundlers.${system}
);
# ── Lib (for programmatic use) ────────────────────────────────────────
lib = {
inherit repoInputNames inputToDir;
# Dependency graph: input name → { deps, follows, hasTests }
depGraph = depGraph;
};
};
}