{ description = "General Vulkan dev environment"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 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; }; in { devShells.default = pkgs.mkShell { name = "vulkan"; hardeningDisable = [ "fortify" ]; packages = with pkgs; [ # Shader compile shader-slang glslang # Vulkan vulkan-headers vulkan-loader vulkan-validation-layers vulkan-tools vulkan-utility-libraries vk-bootstrap vulkan-memory-allocator vulkan-volk # Wayland wayland wayland-protocols wayland-scanner libxkbcommon # Miniaudio libpulseaudio libpulseaudio.dev # Other libraries glfw3 SDL2 sdl3 fmt cli11 simdjson #imgui tinyobjloader nlohmann_json tinygltf # fastgltf stb #ktx-tools glm cmake ninja pkg-config # Debug gdb renderdoc # git ]; # Environment Variables LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.vulkan-loader pkgs.shaderc.lib pkgs.SDL2 pkgs.vk-bootstrap #pkgs.sdl3 ]; VK_LAYER_PATH = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d"; VULKAN_SDK = "${pkgs.vulkan-validation-layers}/share/vulkan/explicit_layer.d"; GIT="${pkgs.git}"; shellHook = '' echo "Vulkan loaded" echo "MangoHud version: $(mangohud --version 2>/dev/null || echo 'non trouvée')" unset SOURCE_DATE_EPOCH #unset NIX_ENFORCE_NO_NATIVE echo $LD_LIBRARY_PATH ''; }; packages.engine = pkgs.callPackage ./package.nix { }; packages.default = self.packages.${system}.engine; }); }