Compare commits
3 Commits
e4b44af05c
...
6ab1795eeb
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ab1795eeb | ||
|
|
69492d78ac | ||
|
|
4b33ed8732 |
@ -24,6 +24,7 @@ endif()
|
||||
find_package( glfw3 REQUIRED )
|
||||
find_package( glm REQUIRED )
|
||||
find_package( VulkanMemoryAllocator CONFIG REQUIRED )
|
||||
find_package( vk-bootstrap REQUIRED )
|
||||
find_package( fmt REQUIRED )
|
||||
find_package( CLI11 REQUIRED )
|
||||
# Shader compilers
|
||||
@ -42,9 +43,6 @@ set_property (
|
||||
|
||||
find_program(SLANGC_EXECUTABLE slangc HINTS $ENV{VULKAN_SDK}/bin REQUIRED)
|
||||
|
||||
# CL11
|
||||
#add_subdirectory(include/CLI11)
|
||||
|
||||
# fastgltf because it's not in nixpkgs
|
||||
|
||||
FetchContent_Declare(
|
||||
@ -54,14 +52,6 @@ FetchContent_Declare(
|
||||
)
|
||||
FetchContent_MakeAvailable(fastgltf)
|
||||
|
||||
# vk-bootstrap because CMAKE can't find it on NixOS
|
||||
FetchContent_Declare(
|
||||
vk-bootstrap
|
||||
GIT_REPOSITORY https://github.com/charles-lunarg/vk-bootstrap.git
|
||||
GIT_TAG v1.3.295
|
||||
)
|
||||
FetchContent_MakeAvailable(vk-bootstrap)
|
||||
|
||||
# Helper functions to build shaders
|
||||
function(addGlslShader SOURCE OUTPUT_DIR)
|
||||
get_filename_component(SHADER_NAME ${SOURCE} NAME_WE)
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
sdl3
|
||||
fmt
|
||||
cli11
|
||||
simdjson
|
||||
#imgui
|
||||
tinyobjloader
|
||||
nlohmann_json
|
||||
@ -81,5 +82,8 @@
|
||||
echo $LD_LIBRARY_PATH
|
||||
'';
|
||||
};
|
||||
|
||||
packages.engine = pkgs.callPackage ./package.nix { };
|
||||
packages.default = self.packages.${system}.engine;
|
||||
});
|
||||
}
|
||||
|
||||
112
package.nix
Normal file
112
package.nix
Normal file
@ -0,0 +1,112 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchgit
|
||||
, cmake
|
||||
, ninja
|
||||
, pkg-config
|
||||
, glfw3
|
||||
, glm
|
||||
, vulkan-headers
|
||||
, vulkan-loader
|
||||
, vulkan-utility-libraries
|
||||
, vulkan-memory-allocator
|
||||
, vk-bootstrap
|
||||
, fmt
|
||||
, cli11
|
||||
, glslang
|
||||
, shader-slang
|
||||
, simdjson
|
||||
}:
|
||||
|
||||
let
|
||||
fs = lib.fileset;
|
||||
fastgltf = fetchFromGitHub {
|
||||
owner = "spnda";
|
||||
repo = "fastgltf";
|
||||
rev = "v0.8.0";
|
||||
hash = "sha256-nPkVMrve1+04XRpSswBqjlSurliCFBRxR8Zxy4xZ5pE=";
|
||||
};
|
||||
imgui = fetchgit {
|
||||
url = "https://git.alexdelcamp.fr/Alexandre_1a/imgui.git";
|
||||
rev = "d7cce3ad5070bbdbbd7a39335c0c1e90071211d0";
|
||||
hash = "sha256-2v085YFc17aj96YlOc4Fp8sJUHUmjRU8X54FnuqKrgc=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "vulkan-engine";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
|
||||
postUnpack = ''
|
||||
# include/ peut ne pas exister du tout dans la copie flake
|
||||
# (cas de figure ici), donc on le crée.
|
||||
mkdir -p $sourceRoot/include
|
||||
|
||||
# On remplace les dossiers vides (ou absents) par les vraies sources
|
||||
rm -rf $sourceRoot/include/imgui $sourceRoot/include/CLI11
|
||||
cp -r ${imgui} $sourceRoot/include/imgui
|
||||
|
||||
# Autorise le write sur l'arbre : CMake va générer des fichiers
|
||||
chmod -R u+w $sourceRoot
|
||||
'';
|
||||
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
glslang
|
||||
shader-slang
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glfw3
|
||||
glm
|
||||
vulkan-headers
|
||||
vulkan-loader
|
||||
vulkan-utility-libraries
|
||||
vk-bootstrap
|
||||
vulkan-memory-allocator
|
||||
fmt
|
||||
cli11
|
||||
simdjson
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_BUILD_TYPE=Release"
|
||||
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
||||
"-DFETCHCONTENT_SOURCE_DIR_FASTGLTF=${fastgltf}"
|
||||
"-DFETCHCONTENT_FULLY_DISCONNECTED=ON"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
|
||||
# Les binaires sont relatifs au répertoire de build (cwd = $sourceRoot/build)
|
||||
cp engine/engine $out/bin/engine
|
||||
cp server/server $out/bin/server
|
||||
|
||||
# Shaders compilés (glslang/slang) — générés dans engine/shaders
|
||||
if [ -d engine/shaders ]; then
|
||||
cp -r engine/shaders $out/bin/shaders
|
||||
fi
|
||||
|
||||
# Assets copiés par addBinary() : modèles et textures
|
||||
if [ -d engine/models ]; then
|
||||
cp -r engine/models $out/bin/models
|
||||
fi
|
||||
if [ -d engine/textures ]; then
|
||||
cp -r engine/textures $out/bin/textures
|
||||
fi
|
||||
|
||||
# Fichiers annexes produits au runtime / par addBinary
|
||||
[ -f engine/LICENSE ] && cp engine/LICENSE $out/bin/LICENSE
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta.mainProgram = "engine";
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user