From 7c10ea23822ceb4fd3a640c8c16eea15bb6b9617 Mon Sep 17 00:00:00 2001 From: Amadey Vorontsov Date: Fri, 15 May 2026 23:11:06 +0000 Subject: [PATCH] [M7] flake: lib.buildCppPackage + packages.default --- flake.nix | 67 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 15 deletions(-) diff --git a/flake.nix b/flake.nix index 45e0b04..7d75c10 100644 --- a/flake.nix +++ b/flake.nix @@ -10,22 +10,61 @@ flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; }; - cargoxx = pkgs.gcc15Stdenv.mkDerivation { - # Fill rules here - }; - buildCppPackage = attrs: pkgs.gcc15Stdenv.mkDerivation { - pname = attrs.pname; - version = attrs.version; - buildPhase = '' - cargoxx build + 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; - package = cargoxx; - devShell = pkgs.gcc15Stdenv.mkDerivation { - name = "shell"; - version = "1.0"; + devShells.default = pkgs.gcc15Stdenv.mkDerivation { + name = "cargoxx-dev"; + version = "0.1.0"; nativeBuildInputs = [ pkgs.ninja pkgs.cmake @@ -35,9 +74,7 @@ pkgs.sqlite pkgs.catch2_3 ]; - hardeningDisable = [ - "all" - ]; + hardeningDisable = [ "all" ]; }; }); }