Hello.
After much hair pulling I am failing to get the nvidia vulkan samples at GitHub - nvpro-samples/vk_mini_samples: Collection of Vulkan samples to build with the following nix-shell description
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "Vulkan-Samples";
buildInputs = [
pkgs.cmake
pkgs.gcc
pkgs.mesa
pkgs.vulkan-headers
pkgs.vulkan-loader
pkgs.vulkan-tools
pkgs.vulkan-validation-layers
pkgs.shaderc
pkgs.shaderc.dev
pkgs.shaderc.lib
#pkgs.glslang
pkgs.glfw
pkgs.glm
pkgs.libGLU
pkgs.python3
pkgs.xorg.libX11
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXinerama
pkgs.xorg.libXi
pkgs.xorg.libXext
pkgs.xorg.libXrender
pkgs.xorg.libXxf86vm
pkgs.xorg.libXdmcp
pkgs.xorg.libXau
pkgs.xorg.libxcb
pkgs.gnutls
pkgs.xorg.libpthreadstubs
pkgs.llvm_15
pkgs.clang_15
pkgs.pkg-config
];
LD_LIBRARY_PATH="${pkgs.vulkan-loader}/lib:${pkgs.shaderc.lib}/lib:${pkgs.shaderc.dev}/lib";
VULKAN_LIB_DIR="${pkgs.shaderc.dev}/lib";
shellHook = "echo ${pkgs.vulkan-loader}";
}
The Nvidia provided cmake files to find the vulkan sdk components at nvpro_core/FindVulkanSDK.cmake at 415a5648bb2c16a887efff9d091efc5e44bc0598 · nvpro-samples/nvpro_core · GitHub returns the following error.
[nix-shell:~/code/nvpro_samples/vk_mini_samples/build]$ cmake ..
-- The C compiler identification is GNU 11.3.0
-- The CXX compiler identification is GNU 11.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/a12yx0i0xh7i39bahq13jhmfplmn69ar-gcc-wrapper-11.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/a12yx0i0xh7i39bahq13jhmfplmn69ar-gcc-wrapper-11.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- BASE_DIRECTORY = /home/luluco/code/nvpro_samples
-- CMAKE_CURRENT_SOURCE_DIR = /home/luluco/code/nvpro_samples/vk_mini_samples
-- VulkanSDK search paths:
-- VULKAN_SDK environment variable:
-- Vulkan Include: /nix/store/ly630b9rwlk7ri2dga2bgfw5liapkqbs-vulkan-headers-1.3.231.0/include
-- Vulkan Library: /nix/store/fca7jbd3iys881z7fqhbz3wrws2ikf3j-vulkan-loader-1.3.231.0/lib/libvulkan.so
-- VULKANSDK_ROOT_DIR = /nix/store/ly630b9rwlk7ri2dga2bgfw5liapkqbs-vulkan-headers-1.3.231.0/include
CMake Error at /nix/store/0257lz452871n4sp11afxfhm1g94dj4b-cmake-3.24.3/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find VulkanSDK (missing: VULKANSDK_SHADERC_LIB)
Call Stack (most recent call first):
/nix/store/0257lz452871n4sp11afxfhm1g94dj4b-cmake-3.24.3/share/cmake-3.24/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/home/luluco/code/nvpro_samples/nvpro_core/cmake/find/FindVulkanSDK.cmake:176 (find_package_handle_standard_args)
/home/luluco/code/nvpro_samples/nvpro_core/cmake/setup.cmake:374 (find_package)
CMakeLists.txt:39 (_add_package_VulkanSDK)
I am not sure what to do now…
UPDATE: Fixed it, I needed one or both of the bin
and static
output derivations from pkgs.shaderc to make it work. here is the final default.nix im using:
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "Vulkan-Samples";
buildInputs = [
pkgs.cmake
pkgs.gcc
pkgs.mesa
pkgs.vulkan-headers
pkgs.vulkan-loader
pkgs.vulkan-tools
pkgs.vulkan-validation-layers
pkgs.shaderc
pkgs.shaderc.bin
pkgs.shaderc.static
pkgs.shaderc.dev
pkgs.shaderc.lib
#pkgs.glslang
pkgs.glfw
pkgs.glm
pkgs.libGLU
pkgs.python3
pkgs.xorg.libX11
pkgs.xorg.libXcursor
pkgs.xorg.libXrandr
pkgs.xorg.libXinerama
pkgs.xorg.libXi
pkgs.xorg.libXext
pkgs.xorg.libXrender
pkgs.xorg.libXxf86vm
pkgs.xorg.libXdmcp
pkgs.xorg.libXau
pkgs.xorg.libxcb
pkgs.gnutls
pkgs.xorg.libpthreadstubs
pkgs.llvm_15
pkgs.clang_15
pkgs.pkg-config
];
LD_LIBRARY_PATH="${pkgs.vulkan-loader}/lib:${pkgs.shaderc.lib}/lib:${pkgs.shaderc.dev}/lib";
VULKAN_LIB_DIR="${pkgs.shaderc.dev}/lib";
shellHook = "echo ${pkgs.vulkan-loader}";
}