marko f976f3c70d feat(flake): add nix binary cache
Used by CI to store build artifacts.

Signed-off-by: markoburcul <marko@status.im>
2026-08-20 12:28:50 +02:00
2026-08-04 11:04:23 +04:00
2026-08-14 16:28:55 +04:00
2026-08-14 20:53:55 +04:00
2026-08-14 14:58:11 +04:00
2026-07-01 18:46:19 +04:00
2026-03-27 14:58:52 +04:00
2026-08-03 12:03:18 +04:00
2026-08-14 16:28:47 +04:00
2026-08-20 12:28:50 +02:00
2026-08-14 20:53:55 +04:00
2026-08-14 16:30:57 +04:00
2026-08-14 14:35:45 +04:00
2026-01-22 18:55:24 +04:00

Logos Storage UI

The Logos Storage UI is a file sharing application built on top of the Logos Storage Module to showcase its capabilities.

How to Run

Run the app using the standalone runner:

nix run

You can override a dependency by using a local version with --override-input. Example:

nix run --override-input storage_module/logos-storage git+file:///somewhere/logos-storage-nim?submodules=1

How to Build

Build the app

nix build

The result will include:

  • /lib/storage_ui_plugin.dylib (or .so on Linux) - The Storage UI plugin

Build packages

nix build '.#lgx'

Troubleshooting:

If you encounter the following error during the build process:

error: Failed to fetch git repository https://boringssl.googlesource.com/boringssl : error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500
fatal: unable to write request to remote: Broken pipe

This is typically due to Git's HTTP request size limits being too low for large repositories. To resolve this, increase the limits by running the following commands:

git config --global http.postBuffer 524288000
git config --global http.maxRequestBuffer 100M

After setting these values, retry to build.

Development Shell

nix develop

Note: In zsh, you need to quote the target (e.g., '.#default') to prevent glob expansion.

If you don't have flakes enabled globally, add experimental flags:

nix build --extra-experimental-features 'nix-command flakes'

To enable globally so you don't need these flags for each command, add the following to ~/.config/nix/nix.conf (create if it doesn't exist):

experimental-features = nix-command flakes

The compiled artifacts can be found at result/

SELinux

If you are using Linux with SELinux enabled, you will not be able to install Nix without disabling it. A common workaround is to install Nix inside a Toolbox container.

Doc-tests

The doctests/ directory holds executable tests written as logos-doctest specs (*.test.yaml).

Unlike the storage module's doc-tests, these are internal: their reports are not published anywhere. In CI each spec runs in its own job and uploads its HTML report as a build artifact, one job per report (see .github/workflows/doctests.yml).

Current specs:

Spec What it checks
storage-ui-migration.test.yaml A legacy bootstrap-node config has its bootstrap list stripped on startup.

Local preview

Run a spec and produce a browsable HTML report with docs/preview.sh:

./docs/preview.sh --doctest-migration

Artefacts land in doctests/preview-outputs/, the report is doctests/preview-outputs/report.html.

Guidance

You can access to the Storage Module documentation to get more context about the Storage Module and its configuration.

You can also refer to our UI Guide for information about the usage of the Storage UI.

If you prefer a technical approach, you can refer to our doctest using automated tests.

Configuration

After onboarding, settings are saved to a file whose location depends on the OS:

OS Path
Linux ~/.config/Logos/LogosStandalone.conf
macOS ~/Library/Preferences/com.logos.LogosStandalone.plist

If you are running this UI inside the Basecamp application, the location of the preferences files will be:

OS Path
Linux ~/.config/Logos/LogosBasecamp.conf
macOS ~/Library/Preferences/com.logos.LogosBasecamp.plist

The settings are saved to the preferences file to preserve the onboarding defaults, but the active configuration is stored in ${HOME}/.logos_storage/config.json. You can tweak the values there directly. Note that running the onboarding again will override any onboarding-related values.

To restart the onboarding process, simply delete the preferences file and relaunch the application or use the debug panel (ctrl + d) to reset the onboarding state.

The debug panel also provides access to the module's configuration JSON for runtime configuration tweaks. See the module's API reference for a list of configuration options. To apply changes, restart the Storage Module.

Mix relays per network

A Mix configuration per network is available in mix-config.json. The file is generated, never edited by hand:

./tools/gen-mix-config.sh

It fetches the live fleet data through storage-config.sh from logos-storage-nim.

CMake embeds it at configure time, so a regenerated file needs no other change. The mix-config.json workflow regenerates it on every PR and fails when the committed file no longer matches the data available in logos-storage-nim.

Nix Organization

The build is driven by flake.nix and metadata.json, using mkLogosQmlModule from logos-module-builder. The previous layout with a separate nix/ directory (default.nix, lib.nix, app.nix) has been replaced by that template.

Development

For more information on development, see the development documentation.

Requirements

Build Tools

  • CMake (3.16 or later)
  • Ninja build system
  • pkg-config

Dependencies

  • Qt6 (qtbase)
  • Qt6 Widgets (included in qtbase)
  • Qt6 Remote Objects (qtremoteobjects)
  • logos-liblogos
  • logos-cpp-sdk (for header generation)
  • logos-storage-module
  • logos-capability-module
  • zstd
  • krb5
  • abseil-cpp
S
Description
UI App for Logos Storage app POC
Readme
8.2 MiB
Languages
QML 78.1%
C++ 17.3%
CMake 3.5%
Shell 0.5%
Nix 0.3%
Other 0.2%