Used by CI to store build artifacts. Signed-off-by: markoburcul <marko@status.im>
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.soon 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