Compare commits

...

3 Commits

Author SHA1 Message Date
Alexandre
6ab1795eeb Tweaked the package
Some checks failed
Build VulkanEngine / build (push) Has been cancelled
2026-09-30 22:57:26 +02:00
Alexandre
69492d78ac Trying so bad 2026-09-30 22:31:32 +02:00
Alexandre
4b33ed8732 Adding a nix build 2026-09-30 22:09:58 +02:00
3 changed files with 117 additions and 11 deletions

View File

@ -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)

View File

@ -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
View 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";
}