Skip to content

External Dependencies

Ghaf relies on a carefully curated set of external dependencies and repositories to provide comprehensive functionality while maintaining security and reliability. This reference documents all external dependencies, their purpose, and integration points.

Source: github:tiiuae/nixpkgs/britty-gst-python Purpose: Core package repository with Ghaf-specific patches Customizations:

  • GStreamer Python bindings fixes
  • Security patches for edge computing
  • Hardware driver updates

Integration: Base for all package definitions and system configuration

Source: github:hercules-ci/flake-parts Purpose: Modular flake architecture framework Usage: Organizes Ghaf’s modular structure with clean separation of concerns

Source: github:nix-community/nixos-generators Purpose: Multiple output format generation (ISO, VM images, etc.) Usage: Creates bootable images and VM formats for different platforms

Source: github:NixOS/nixos-hardware Purpose: Hardware-specific configurations and optimizations Hardware Supported:

  • Lenovo laptop series
  • ASUS hardware configurations
  • Generic x86_64 optimizations

Source: github:anduril/jetpack-nixos Purpose: NVIDIA Jetpack SDK integration for Jetson platforms Features:

  • CUDA runtime and drivers
  • TensorRT inference engine
  • DeepStream multimedia processing
  • L4T (Linux for Tegra) kernel

Source: github:astro/microvm.nix Purpose: Lightweight virtualization framework Capabilities:

  • Fast VM startup and shutdown
  • Minimal resource overhead
  • Declarative VM configuration
  • Integration with host networking

Source: github:tiiuae/ci-test-automation Purpose: Automated testing framework for Ghaf configurations Test Types:

  • Hardware compatibility testing
  • Security validation
  • Performance benchmarking
  • Integration testing

Source: github:numtide/treefmt-nix Purpose: Code formatting and linting across multiple languages Supported Languages:

  • Nix (nixfmt-rfc-style)
  • Python (ruff)
  • Shell scripts (shellcheck)
  • JavaScript/TypeScript (prettier)

Source: github:tiiuae/ghafpkgs Purpose: Ghaf-specific package collection and overlays Contents:

  • Security-focused applications
  • Custom system utilities
  • Hardware-specific tools

Source: github:tiiuae/givc Purpose: Guest Inter-VM Communication framework Features:

  • Secure message passing between VMs
  • Authentication and authorization
  • Resource sharing protocols

Source: github:tiiuae/ctrl-panel Purpose: System control and monitoring interface Capabilities:

  • VM lifecycle management
  • System monitoring and metrics
  • User interface for system control

Source: github:tiiuae/wireguard-gui Purpose: Graphical interface for WireGuard VPN management Features:

  • VPN tunnel configuration
  • Connection status monitoring
  • Network isolation management

Source: github:tiiuae/spectrum-config Purpose: Radio spectrum management and configuration Use Cases:

  • Software-defined radio integration
  • Wireless communication optimization
  • Spectrum analysis tools

Source: github:drupol/pkgs-by-name-for-flake-parts Purpose: Automatic package discovery and organization Benefits:

  • Streamlined package management
  • Automatic package exposure
  • Consistent naming conventions

Source: github:nix-systems/default Purpose: Standard system definitions for cross-platform builds Platforms: x86_64-linux, aarch64-linux, riscv64-linux

Source: github:NixOS/nixpkgs/lib Purpose: Nix library functions for advanced flake operations Usage: Utility functions for complex configuration management

Purpose: Documentation site generator Features:

  • Multi-language support
  • Search functionality
  • Mobile-responsive design
  • Automatic navigation generation

All dependencies are pinned to specific commits to ensure:

  • Reproducibility: Identical builds across environments
  • Security: Controlled updates with security review
  • Stability: Tested combinations of dependencies
  1. Security monitoring: Regular CVE scanning of dependencies
  2. Compatibility testing: Automated testing with new versions
  3. Staged rollout: Gradual deployment across test environments
  4. Documentation updates: Maintain current dependency documentation
ghaf
├── nixpkgs (core)
│ ├── flake-parts
│ └── nixos-generators
├── hardware-support
│ ├── nixos-hardware
│ ├── jetpack-nixos
│ └── microvm.nix
├── ghaf-ecosystem
│ ├── ghafpkgs
│ ├── givc
│ ├── ctrl-panel
│ └── wireguard-gui
├── development
│ ├── ci-test-automation
│ └── treefmt-nix
└── specialized
├── spectrum-config
└── pkgs-by-name-for-flake-parts

All dependencies are compatible with Apache-2.0 license:

  • MIT: Compatible, permissive
  • BSD: Compatible, permissive
  • Apache-2.0: Direct compatibility
  • GPL exceptions: Carefully evaluated for compatibility
  • SBOM generation: Software Bill of Materials tracking
  • Vulnerability scanning: Automated security scanning
  • Provenance tracking: Source code and build provenance
  • Signature verification: Cryptographic signature validation
Terminal window
# Clear Nix cache
nix store gc
nix flake update
# Rebuild with clean cache
nix build .#target --rebuild
Terminal window
# Use alternative substituters
nix build --option substituters "https://cache.nixos.org"
# Increase timeouts
nix build --option connect-timeout 300
Terminal window
# Check flake inputs
nix flake show --json | jq '.inputs'
# Update specific input
nix flake lock --update-input nixpkgs

Ghaf maintains active relationships with upstream projects:

  • nixpkgs: Regular contribution of hardware support and security fixes
  • microvm.nix: Performance optimizations and feature enhancements
  • jetpack-nixos: Hardware compatibility improvements

For forked dependencies:

  1. Minimal changes: Keep forks as close to upstream as possible
  2. Clear documentation: Document all changes and reasoning
  3. Upstream integration: Work toward upstreaming changes
  4. Regular rebasing: Keep forks current with upstream