{ description = "cargoxx"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, nixpkgs, flake-utils }: flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; cargoxx-bin = pkgs.gcc15Stdenv.mkDerivation { pname = "cargoxx"; version = "0.1.0"; src = ./.; nativeBuildInputs = [ pkgs.cmake pkgs.ninja ]; buildInputs = [ pkgs.sqlite pkgs.reproc pkgs.catch2_3 ]; configurePhase = '' cmake -S build -B build/release -G Ninja \ -DCMAKE_BUILD_TYPE=Release ''; buildPhase = '' cmake --build build/release ''; installPhase = '' mkdir -p $out/bin cp build/release/cargoxx $out/bin/ ''; hardeningDisable = [ "all" ]; }; buildCppPackage = { src, name ? null, ... }@args: let lock = builtins.fromTOML (builtins.readFile (src + "/Cargoxx.lock")); root = builtins.head (builtins.filter (p: !(p ? linkdb_source)) lock.package); pname = if name != null then name else root.name; in pkgs.gcc15Stdenv.mkDerivation { inherit pname src; version = root.version; nativeBuildInputs = [ cargoxx-bin pkgs.nix ]; buildPhase = '' export HOME=$(mktemp -d) cargoxx build --release ''; installPhase = '' mkdir -p $out/bin cp build/release/${pname} $out/bin/ 2>/dev/null || \ cp build/release/${pname}_bin $out/bin/${pname} ''; hardeningDisable = [ "all" ]; __noChroot = true; }; in { packages.default = cargoxx-bin; lib.buildCppPackage = buildCppPackage; devShells.default = pkgs.gcc15Stdenv.mkDerivation { name = "cargoxx-dev"; version = "0.1.0"; nativeBuildInputs = [ pkgs.ninja pkgs.cmake ]; buildInputs = [ pkgs.reproc pkgs.sqlite pkgs.catch2_3 ]; hardeningDisable = [ "all" ]; }; }); }