This repository is a collection of Nix Flakes for managing various packages and tools. The structure is modular, with each package defined in its own file under the packages/ directory. Shared utilities and scripts are located in the lib/ directory.
flake.nix: The entry point for the Nix Flake. Defines the outputs and dependencies.flake.lock: Lock file for the Flake, ensuring reproducibility.packages/: Contains Nix expressions for individual packages. Examples include:gcc-toolchain-tricore.nix: Configuration for the GCC toolchain targeting TriCore.gdb-tricore.nix: Configuration for GDB targeting TriCore.qemu-bap.nix: Configuration for QEMU with Binary Analysis Platform (BAP).rizin.nix: Configuration for the Rizin reverse engineering framework.
lib/: Contains shared scripts and utilities, such as:meson-tools/: Utilities for working with Meson build system.meson-deps-config-hook.sh: A shell script for configuring Meson dependencies.
To build a specific package, use the nix build command with the desired package name. For example:
nix build .#qemu-bapThis will build the qemu-bap package defined in packages/qemu-bap.nix.
Currently, there is no explicit testing framework defined in the repository. However, you can validate by running the nix flake check command and ensuring the outputs are as expected.
For debugging build issues, use the nix log command to inspect build logs:
nix log /nix/store/<build-output-path>Replace <build-output-path> with the actual path from the build output.
- Modular Design: Each package is defined in its own file under
packages/. - Shared Utilities: Common scripts and hooks are stored in
lib/. - Flake Flakes: The
flake.nixfile defines the outputs, which include packages and utilities.
- Nix: This project relies on the Nix package manager. Ensure you have Nix installed and configured to use Flakes.
To add a new package:
- Create a new
.nixfile in thepackages/directory. - Define the package using Nix expressions.
- Update
flake.nixto include the new package in the outputs.
If you need to update a shared script:
- Edit the relevant file in
lib/. - Test the changes by rebuilding the affected packages.