2.6 KiB
2.6 KiB
Developer Guide & Repository Reference
This guide provides instructions for building, testing, linting, and contributing to the nx9-wg codebase.
1. Workspace Layout
The repository is organized as a Cargo workspace containing 6 crates and the root application binary:
crates/nx9-wg-core: Common domain entities, RFC validators, cryptography, and configuration.crates/nx9-wg-db: SQLite database persistence layer, migration SQL scripts, and repository implementations.crates/nx9-wireguard: WireGuard Generic Netlink execution, RTNETLINK link management, config builder, and QR engine.crates/nx9-wg-network: RTNETLINK route management,libnftables.so.1integration, and procfs forwarding.crates/nx9-wg-api: Axum REST API router, WebSocket broadcaster, authentication middleware, and reconciliation engine.crates/nx9-wg-ui: Design tokens, CSS stylesheet compiler, view models, and SPA asset integration.src/main.rs: Root CLI command parser and daemon entry point.
2. Prerequisites & Build Commands
Prerequisites
- Rust Toolchain: 1.85+ (Edition 2024).
- C Compiler:
gccorclang(for SQLite C amalgamation). - Linux Libraries:
libnftables-dev(Debian/Ubuntu) ornftables-devel/libnftables(Fedora/Arch).
Build Commands
# Debug build
cargo build --workspace
# Release build
cargo build --release
# Format check
cargo fmt --all -- --check
# Clippy linter
cargo clippy --workspace --all-targets --all-features -- -D warnings
3. Test Execution & SAFE Mode (LIVE=0) vs Privileged Mode (LIVE=1)
To prevent accidental modifications to developer workstations, all integration and live kernel test scripts default to SAFE mode (LIVE=0):
# 1. Run full workspace unit & integration tests
cargo test --workspace
# 2. Run Comprehensive CLI Verification Suite (210 checks)
LIVE=0 bash scripts/test-cli-comprehensive.sh
# 3. Run Native Linux Integration Test Suite (20 checks)
LIVE=0 bash scripts/test-native-integration.sh
# 4. Run Dedicated Live Kernel Test Suite (24 checks)
LIVE=0 bash scripts/test-live-kernel.sh
Privileged Real-Kernel Testing (LIVE=1)
Caution
LIVE=1tests must ONLY be executed on a dedicated disposable Linux virtual machine or container withCAP_NET_ADMIN. Never executeLIVE=1on a production host.
# On a dedicated disposable VM as root:
sudo LIVE=1 bash scripts/test-live-kernel.sh
4. Release Packaging
To build the self-contained release distribution archives:
bash scripts/package-release.sh
Outputs .tar.gz, .tar.xz, and .sha256 files in target/dist/.