feat: implement Phase 2 RNS carrier
This commit is contained in:
parent
37df976fde
commit
22fe9f1b9f
14 changed files with 1439 additions and 12 deletions
83
flake.nix
83
flake.nix
|
|
@ -4,21 +4,81 @@
|
|||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
|
||||
# RNS carrier sources (upstream RNS.md sec 13): the build sandbox has no
|
||||
# network, so every microReticulum FetchContent dependency is vendored as
|
||||
# its own flake input and handed over via RNS_<DEP>_SOURCE_DIR.
|
||||
# microReticulum is pinned at the commit bunshin verified against.
|
||||
microReticulum = {
|
||||
url = "github:attermann/microReticulum/40fa628809d57140180c1c833559ab96fec992c1";
|
||||
flake = false;
|
||||
};
|
||||
rns-arduinojson = {
|
||||
url = "github:bblanchon/ArduinoJson/ed69feadb95182dc53ac978975d310122060a767";
|
||||
flake = false;
|
||||
};
|
||||
rns-msgpack = {
|
||||
url = "github:hideakitai/MsgPack/1f552c31b940d6e9063ee17a4b3fa10c47b27169";
|
||||
flake = false;
|
||||
};
|
||||
rns-arxcontainer = {
|
||||
url = "github:hideakitai/ArxContainer/d6affcd0bc83219b863c20abf7c269214db8db2a";
|
||||
flake = false;
|
||||
};
|
||||
rns-arxtypetraits = {
|
||||
url = "github:hideakitai/ArxTypeTraits/702de9cc59c7e047cdc169ae3547718b289d2c02";
|
||||
flake = false;
|
||||
};
|
||||
rns-debuglog = {
|
||||
url = "github:hideakitai/DebugLog/b581f7dde6c276c5df684e2328f406d9754d2f46";
|
||||
flake = false;
|
||||
};
|
||||
rns-crypto = {
|
||||
url = "github:attermann/Crypto/984dc891330986c302a86c4e312d4f5abcc28359";
|
||||
flake = false;
|
||||
};
|
||||
rns-microstore = {
|
||||
url = "github:attermann/microStore/0f28567fe00ab8ab14624a34c2e9e0a000a44c46";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
outputs = { self, nixpkgs, flake-utils, microReticulum, rns-arduinojson
|
||||
, rns-msgpack, rns-arxcontainer, rns-arxtypetraits, rns-debuglog
|
||||
, rns-crypto, rns-microstore }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
inherit (pkgs) lib;
|
||||
|
||||
# build.rs consumes these directly; with every dependency vendored,
|
||||
# the cmake configure step never fetches.
|
||||
rnsSourceEnv = {
|
||||
MICRORETICULUM_SOURCE_DIR = "${microReticulum}";
|
||||
RNS_ARDUINOJSON_SOURCE_DIR = "${rns-arduinojson}";
|
||||
RNS_MSGPACK_SOURCE_DIR = "${rns-msgpack}";
|
||||
RNS_ARXCONTAINER_SOURCE_DIR = "${rns-arxcontainer}";
|
||||
RNS_ARXTYPETRAITS_SOURCE_DIR = "${rns-arxtypetraits}";
|
||||
RNS_DEBUGLOG_SOURCE_DIR = "${rns-debuglog}";
|
||||
RNS_CRYPTO_SOURCE_DIR = "${rns-crypto}";
|
||||
RNS_MICROSTORE_SOURCE_DIR = "${rns-microstore}";
|
||||
};
|
||||
|
||||
fumi = { rns ? false }: pkgs.rustPlatform.buildRustPackage {
|
||||
pname = "fumi";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
cargoLock.lockFile = ./Cargo.lock;
|
||||
buildFeatures = pkgs.lib.optionals rns [ "rns" ];
|
||||
# The rns feature vendors microReticulum behind the shim and needs
|
||||
# MICRORETICULUM_SOURCE_DIR; it is added with the RNS carrier.
|
||||
doCheck = !rns;
|
||||
nativeBuildInputs = [ pkgs.pkg-config ]
|
||||
++ lib.optionals rns [ pkgs.cmake pkgs.ninja pkgs.gcc ];
|
||||
buildFeatures = lib.optionals rns [ "rns" ];
|
||||
env = lib.optionalAttrs rns rnsSourceEnv;
|
||||
# ninja's setup hook claims buildPhase before the cargo hooks
|
||||
# can, which would run ninja against no build.ninja instead of
|
||||
# cargo; ninja here is only for build.rs to invoke through cmake.
|
||||
dontUseNinjaBuild = rns;
|
||||
dontUseNinjaCheck = rns;
|
||||
dontUseNinjaInstall = rns;
|
||||
};
|
||||
in
|
||||
{
|
||||
|
|
@ -31,7 +91,18 @@
|
|||
};
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [ cargo rustc rustfmt clippy sqlite ];
|
||||
packages = with pkgs; [
|
||||
cargo
|
||||
rustc
|
||||
rustfmt
|
||||
clippy
|
||||
pkg-config
|
||||
sqlite
|
||||
cmake
|
||||
ninja
|
||||
gcc
|
||||
];
|
||||
env = rnsSourceEnv;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue