Vulkan/flake.nix
Alexandre e2a2833aae
Some checks failed
Build VulkanEngine / nix (push) Has been cancelled
Build VulkanEngine / release (BUNDLE) (push) Has been cancelled
Build VulkanEngine / release (PORTABLE) (push) Has been cancelled
Build VulkanEngine / notify (push) Has been cancelled
Tring to fix things
2026-10-09 23:17:15 +02:00

115 lines
2.6 KiB
Nix

{
description = "VulkanEngine development environment";
inputs = {
nixpkgs.url = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
vulkanPackages = with pkgs; [
vulkan-headers
vulkan-loader
vulkan-validation-layers
vulkan-tools
vulkan-utility-libraries
vulkan-memory-allocator
vulkan-volk
vk-bootstrap
];
developmentPackages = with pkgs; [
# Shaders
shader-slang
glslang
# Vulkan
vulkan-headers
vulkan-loader
vulkan-validation-layers
vulkan-tools
vulkan-utility-libraries
vulkan-memory-allocator
vulkan-volk
vk-bootstrap
# Windowing
glfw3
wayland
wayland-protocols
wayland-scanner
libxkbcommon
# Audio
libpulseaudio
libpulseaudio.dev
# Libraries
fmt
cli11
simdjson
glm
nlohmann_json
tinyobjloader
tinygltf
stb
# Build
cmake
ninja
pkg-config
# Debug
gdb
renderdoc
];
in {
devShells.default = pkgs.mkShell {
name = "vulkan-engine";
hardeningDisable = [
"fortify"
];
packages = developmentPackages;
VK_LAYER_PATH =
"${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d";
VULKAN_SDK =
"${pkgs.vulkan-validation-layers}";
shellHook = ''
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [
pkgs.vulkan-loader
pkgs.wayland
pkgs.libxkbcommon
]}"
echo "VulkanEngine development environment"
echo "CMake: $(cmake --version | head -n1)"
echo "Ninja: $(ninja --version)"
echo "GCC: $(g++ --version | head -n1)"
echo "GLSLang: $(glslangValidator --version | head -n1)"
echo "Slang: $(slangc -v | head -n1)"
unset SOURCE_DATE_EPOCH
'';
};
packages.engine =
pkgs.callPackage ./package.nix {};
packages.default =
self.packages.${system}.engine;
}
);
}