From 6ab1795eeb7a4be1c098896f5a7b233c4264e2f8 Mon Sep 17 00:00:00 2001 From: Alexandre Date: Wed, 30 Sep 2026 22:57:26 +0200 Subject: [PATCH] Tweaked the package --- package.nix | 63 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/package.nix b/package.nix index b2e0293..d1434d7 100644 --- a/package.nix +++ b/package.nix @@ -1,6 +1,7 @@ { lib , stdenv , fetchFromGitHub +, fetchgit , cmake , ninja , pkg-config @@ -8,6 +9,7 @@ , glm , vulkan-headers , vulkan-loader +, vulkan-utility-libraries , vulkan-memory-allocator , vk-bootstrap , fmt @@ -18,30 +20,37 @@ }: 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 = builtins.path { - path = ./.; - name = "vulkan-engine-source"; - filter = path: type: - let base = baseNameOf path; - in !(builtins.elem base [ - ".git" - ".direnv" - "build" - "result" - "result-bundle" - "_deps" - ]); - }; + 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 @@ -56,6 +65,7 @@ stdenv.mkDerivation { glm vulkan-headers vulkan-loader + vulkan-utility-libraries vk-bootstrap vulkan-memory-allocator fmt @@ -72,12 +82,29 @@ stdenv.mkDerivation { installPhase = '' runHook preInstall + mkdir -p $out/bin - cp build/engine/engine $out/bin/engine - cp build/server/server $out/bin/server - if [ -d build/engine/shaders ]; then - cp -r build/engine/shaders $out/bin/shaders + + # 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 '';