[M7] flake: lib.buildCppPackage + packages.default
This commit is contained in:
67
flake.nix
67
flake.nix
@@ -10,22 +10,61 @@
|
|||||||
flake-utils.lib.eachDefaultSystem (system:
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
let
|
let
|
||||||
pkgs = import nixpkgs { inherit system; };
|
pkgs = import nixpkgs { inherit system; };
|
||||||
cargoxx = pkgs.gcc15Stdenv.mkDerivation {
|
cargoxx-bin = pkgs.gcc15Stdenv.mkDerivation {
|
||||||
# Fill rules here
|
pname = "cargoxx";
|
||||||
};
|
version = "0.1.0";
|
||||||
buildCppPackage = attrs: pkgs.gcc15Stdenv.mkDerivation {
|
src = ./.;
|
||||||
pname = attrs.pname;
|
nativeBuildInputs = [
|
||||||
version = attrs.version;
|
pkgs.cmake
|
||||||
buildPhase = ''
|
pkgs.ninja
|
||||||
cargoxx build
|
];
|
||||||
|
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 {
|
in {
|
||||||
|
packages.default = cargoxx-bin;
|
||||||
lib.buildCppPackage = buildCppPackage;
|
lib.buildCppPackage = buildCppPackage;
|
||||||
package = cargoxx;
|
devShells.default = pkgs.gcc15Stdenv.mkDerivation {
|
||||||
devShell = pkgs.gcc15Stdenv.mkDerivation {
|
name = "cargoxx-dev";
|
||||||
name = "shell";
|
version = "0.1.0";
|
||||||
version = "1.0";
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
pkgs.ninja
|
pkgs.ninja
|
||||||
pkgs.cmake
|
pkgs.cmake
|
||||||
@@ -35,9 +74,7 @@
|
|||||||
pkgs.sqlite
|
pkgs.sqlite
|
||||||
pkgs.catch2_3
|
pkgs.catch2_3
|
||||||
];
|
];
|
||||||
hardeningDisable = [
|
hardeningDisable = [ "all" ];
|
||||||
"all"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user