From a3657eb0e40886ad56f6622baa9bcac01e2955c1 Mon Sep 17 00:00:00 2001 From: Warwick Date: Tue, 22 Apr 2025 17:57:31 +0100 Subject: [PATCH] Man nix fucking sucks for managing vulkan/opengl projects on other distros --- CMakeLists.txt | 3 +++ default.nix | 31 +++++++++++++++++++++++++++++++ flake.nix | 1 + shell.nix | 2 ++ 4 files changed, 37 insertions(+) create mode 100644 default.nix diff --git a/CMakeLists.txt b/CMakeLists.txt index 13705f3..f124945 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ message(STATUS "wgpu include dir: ${WGPU_INCLUDE}") find_package(SDL3 REQUIRED) find_package(SDL3_image REQUIRED) find_package(cglm REQUIRED) +find_package(Vulkan REQUIRED) include(FeatureSummary) feature_summary(WHAT PACKAGES_FOUND) @@ -51,6 +52,7 @@ target_include_directories(${PROJECT_NAME} PRIVATE ${SDL3_image_INCLUDE_DIRS} ${GLFW_INCLUDE_DIRS} ${CGLM_INCLUDE_DIRS} + ${Vulkan_INCLUDE_DIRS} ) target_link_libraries(${PROJECT_NAME} @@ -58,4 +60,5 @@ target_link_libraries(${PROJECT_NAME} ${SDL3_LIBRARIES} ${SDL3_image_LIBRARIES} ${CGLM_LIBRARIES} + ${Vulkan_LIBRARIES} ) diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..102f003 --- /dev/null +++ b/default.nix @@ -0,0 +1,31 @@ +{ pkgs ? import {} }: + +pkgs.stdenv.mkDerivation { + name = "webgpu"; + src = ./.; + + nativeBuildInputs = with pkgs; [ + cmake + wgpu-native + cglm + sdl3 + sdl3-image + nixgl.nixVulkanIntel + ]; + + buildInputs = with pkgs; [ + vulkan-headers + vulkan-loader + vulkan-tools + ]; + + buildPhase = '' + cmake . + make + ''; + + installPhase = '' + mkdir -p $out/bin + cp webgpu $out/bin + ''; +} diff --git a/flake.nix b/flake.nix index d11b7d6..2a0a350 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,7 @@ overlays = [ nixgl.overlay ]; }; in { + packages.x86_64-linux.default = (import ./default.nix { inherit pkgs; }); devShells.x86_64-linux.default = (import ./shell.nix { inherit pkgs; }); }; } diff --git a/shell.nix b/shell.nix index 8fab0fe..6378cbd 100644 --- a/shell.nix +++ b/shell.nix @@ -10,6 +10,8 @@ pkgs.mkShell sdl3-image nixgl.nixVulkanIntel vulkan-headers + vulkan-loader + vulkan-tools ]; shellHook = '' export PS1="(webgpu) $PS1"