2025-12-17 17:10:59 +01:00
{
2026-01-30 19:21:23 +01:00
description = " L o g o s B l o c k c h a i n M o d u l e - Q t 6 P l u g i n " ;
2025-12-17 17:10:59 +01:00
inputs = {
2025-12-18 11:47:59 +01:00
nixpkgs . follows = " l o g o s - l i b l o g o s / n i x p k g s " ;
2026-01-30 19:21:23 +01:00
2025-12-18 11:47:59 +01:00
logos-liblogos . url = " g i t h u b : l o g o s - c o / l o g o s - l i b l o g o s " ;
2026-01-30 19:21:23 +01:00
logos-core . url = " g i t h u b : l o g o s - c o / l o g o s - c p p - s d k " ;
2025-12-18 11:47:59 +01:00
2026-02-25 13:48:37 +01:00
logos-blockchain . url = " g i t h u b : l o g o s - b l o c k c h a i n / l o g o s - b l o c k c h a i n ? r e f = f e d 5 e f e 6 b d 5 2 c 0 d 6 2 d 4 9 0 c 3 5 f 5 c 2 a 4 3 6 8 b 9 4 3 4 2 f " ; # 0.1.7 with c-bindings transfer funds fix
2026-01-30 19:21:23 +01:00
logos-module-viewer . url = " g i t h u b : l o g o s - c o / l o g o s - m o d u l e - v i e w e r " ;
2025-12-17 17:10:59 +01:00
} ;
2026-01-30 19:21:23 +01:00
outputs =
{
self ,
nixpkgs ,
logos-core ,
logos-blockchain ,
logos-module-viewer ,
. . .
} :
2025-12-18 11:47:59 +01:00
let
2026-01-30 19:21:23 +01:00
lib = nixpkgs . lib ;
systems = [
" x 8 6 _ 6 4 - l i n u x "
" a a r c h 6 4 - l i n u x "
" x 8 6 _ 6 4 - d a r w i n "
" a a r c h 6 4 - d a r w i n "
] ;
forAll = lib . genAttrs systems ;
mkPkgs = system : import nixpkgs { inherit system ; } ;
2025-12-18 11:47:59 +01:00
in
{
2026-01-30 19:21:23 +01:00
packages = forAll (
system :
2025-12-18 11:47:59 +01:00
let
2026-01-30 19:21:23 +01:00
pkgs = mkPkgs system ;
2025-12-18 11:47:59 +01:00
llvmPkgs = pkgs . llvmPackages ;
2026-01-30 19:21:23 +01:00
logosCore = logos-core . packages . ${ system } . default ;
logosBlockchainC = logos-blockchain . packages . ${ system } . logos-blockchain-c ;
logosBlockchainModule = pkgs . stdenv . mkDerivation {
2025-12-18 11:47:59 +01:00
pname = " l o g o s - b l o c k c h a i n - m o d u l e " ;
version = " d e v " ;
src = ./. ;
nativeBuildInputs = [
pkgs . cmake
pkgs . ninja
pkgs . pkg-config
2026-01-30 19:21:23 +01:00
pkgs . qt6 . wrapQtAppsHook
2025-12-18 11:47:59 +01:00
] ;
buildInputs = [
2026-01-30 19:21:23 +01:00
pkgs . qt6 . qtbase
pkgs . qt6 . qtremoteobjects
pkgs . qt6 . qttools
2025-12-18 11:47:59 +01:00
llvmPkgs . clang
llvmPkgs . libclang
2026-01-30 19:21:23 +01:00
logosBlockchainC
]
++ lib . optionals pkgs . stdenv . isDarwin [
2025-12-18 11:47:59 +01:00
pkgs . libiconv
2026-01-30 19:21:23 +01:00
pkgs . cacert
2025-12-18 11:47:59 +01:00
] ;
LIBCLANG_PATH = " ${ llvmPkgs . libclang . lib } / l i b " ;
CLANG_PATH = " ${ llvmPkgs . clang } / b i n / c l a n g " ;
2026-01-30 19:21:23 +01:00
SSL_CERT_FILE = lib . optionalString pkgs . stdenv . isDarwin " ${ pkgs . cacert } / e t c / s s l / c e r t s / c a - b u n d l e . c r t " ;
2025-12-18 11:47:59 +01:00
2026-01-30 19:21:23 +01:00
cmakeFlags = [
" - D L O G O S _ C O R E _ R O O T = ${ logosCore } "
" - D L O G O S _ B L O C K C H A I N _ L I B = ${ logosBlockchainC } / l i b "
" - D L O G O S _ B L O C K C H A I N _ I N C L U D E = ${ logosBlockchainC } / i n c l u d e "
] ;
2026-02-11 15:02:16 +01:00
postInstall = ''
2026-02-26 13:01:37 +00:00
mkdir $ out/share
cp - r $ { logosBlockchainC } /circuits $ out/share
2026-02-11 15:02:16 +01:00
'' ;
2026-01-30 19:21:23 +01:00
} ;
in
{
2026-02-05 12:24:46 +01:00
lib = logosBlockchainModule ;
2026-01-30 19:21:23 +01:00
default = logosBlockchainModule ;
}
) ;
2025-12-18 11:47:59 +01:00
2026-01-30 19:21:23 +01:00
apps = forAll (
system :
let
pkgs = mkPkgs system ;
2026-02-05 12:24:46 +01:00
logosBlockchainModuleLib = self . packages . ${ system } . lib ;
2026-01-30 19:21:23 +01:00
logosModuleViewer = logos-module-viewer . packages . ${ system } . default ;
2026-02-02 14:43:42 +01:00
extension = if pkgs . stdenv . isDarwin then " d y l i b "
else if pkgs . stdenv . hostPlatform . isWindows then " d l l "
else " s o " ;
2026-02-05 12:24:46 +01:00
inspectModule = {
2026-01-30 19:21:23 +01:00
type = " a p p " ;
program =
" ${ pkgs . writeShellScriptBin " i n s p e c t - m o d u l e " ''
exec $ { logosModuleViewer } /bin/logos-module-viewer \
2026-02-19 15:29:34 +01:00
- - module $ { logosBlockchainModuleLib } /lib/liblogos_blockchain_module. $ { extension }
2026-01-30 19:21:23 +01:00
'' } / b i n / i n s p e c t - m o d u l e " ;
2025-12-17 17:10:59 +01:00
} ;
2026-02-05 12:24:46 +01:00
in
{
inspect-module = inspectModule ;
default = inspectModule ;
2025-12-18 11:47:59 +01:00
}
) ;
2026-01-30 19:21:23 +01:00
devShells = forAll (
system :
2025-12-18 11:47:59 +01:00
let
2026-01-30 19:21:23 +01:00
pkgs = mkPkgs system ;
pkg = self . packages . ${ system } . default ;
logosCore = logos-core . packages . ${ system } . default ;
logosBlockchainC = logos-blockchain . packages . ${ system } . logos-blockchain-c ;
2025-12-18 11:47:59 +01:00
in
{
default = pkgs . mkShell {
2026-01-30 19:21:23 +01:00
inputsFrom = [ pkg ] ;
2025-12-18 11:47:59 +01:00
2026-01-30 19:21:23 +01:00
inherit ( pkg )
LIBCLANG_PATH
CLANG_PATH ;
2025-12-18 11:47:59 +01:00
2026-01-30 19:21:23 +01:00
LOGOS_CORE_ROOT = " ${ logosCore } " ;
LOGOS_BLOCKCHAIN_LIB = " ${ logosBlockchainC } / l i b " ;
LOGOS_BLOCKCHAIN_INCLUDE = " ${ logosBlockchainC } / i n c l u d e " ;
2025-12-18 11:47:59 +01:00
shellHook = ''
2026-01-30 19:21:23 +01:00
BLUE = ' \ e [ 1 ; 3 4 m'
GREEN = ' \ e [ 1 ; 3 2 m'
RESET = ' \ e [ 0 m'
echo - e " \n ' ' ${ BLUE } = = = L o g o s B l o c k c h a i n M o d u l e D e v e l o p m e n t E n v i r o n m e n t = = = ' ' ${ RESET } "
echo - e " ' ' ${ GREEN } L O G O S _ C O R E _ R O O T : ' ' ${ RESET } $ L O G O S _ C O R E _ R O O T "
echo - e " ' ' ${ GREEN } L O G O S _ B L O C K C H A I N _ L I B : ' ' ${ RESET } $ L O G O S _ B L O C K C H A I N _ L I B "
echo - e " ' ' ${ GREEN } L O G O S _ B L O C K C H A I N _ I N C L U D E : ' ' ${ RESET } $ L O G O S _ B L O C K C H A I N _ I N C L U D E "
echo - e " ' ' ${ BLUE } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' ' ${ RESET } "
2025-12-18 11:47:59 +01:00
'' ;
} ;
}
) ;
} ;
2025-12-17 17:10:59 +01:00
}