[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:
|
||||
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" ];
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user