66 lines
1.2 KiB
Nix
66 lines
1.2 KiB
Nix
{ lib
|
|
, stdenv
|
|
, cmake
|
|
, ninja
|
|
, pkg-config
|
|
, glfw3
|
|
, glm
|
|
, vulkan-headers
|
|
, vulkan-loader
|
|
, vulkan-memory-allocator
|
|
, fmt
|
|
, cli11
|
|
, glslang
|
|
, shader-slang
|
|
, fastgltf
|
|
, vk-bootstrap
|
|
}:
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "vulkan-engine";
|
|
version = "0.1.0";
|
|
src = ./.;
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
ninja
|
|
pkg-config
|
|
glslang
|
|
shader-slang
|
|
];
|
|
|
|
buildInputs = [
|
|
glfw3
|
|
glm
|
|
vulkan-headers
|
|
vulkan-loader
|
|
vulkan-memory-allocator
|
|
fmt
|
|
cli11
|
|
fastgltf
|
|
vk-bootstrap
|
|
];
|
|
|
|
cmakeFlags = [
|
|
"-DCMAKE_BUILD_TYPE=Release"
|
|
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
|
# Si ton CMakeLists utilise FetchContent pour fastgltf/vk-bootstrap,
|
|
# il faut soit les fournir via buildInputs (ce qui est fait ici),
|
|
# soit patcher le CMakeLists pour qu'il les trouve déjà installés.
|
|
# Si le FetchContent reste actif, le build Nix échouera car
|
|
# le sandbox n'a pas d'accès réseau.
|
|
];
|
|
|
|
# Ton CMakeLists installe-t-il quelque chose ? Si non, il faut
|
|
# installer manuellement les binaires.
|
|
installPhase = ''
|
|
runHook preInstall
|
|
mkdir -p $out/bin
|
|
cp build/engine/engine $out/bin/engine
|
|
cp build/server/server $out/bin/server
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta.mainProgram = "engine";
|
|
}
|