{ lib, rustPlatform, nix-gitignore, bash, makeWrapper, dav1d, vulkan-loader, libGL, wayland, pkg-config, libxkbcommon, pkgs, stdenv, targetPackages ? pkgs, }: let version = (builtins.fromTOML (builtins.readFile ./Cargo.toml)).package.version; src = nix-gitignore.gitignoreSource [] ./.; in rustPlatform.buildRustPackage rec { pname = "zenyx"; inherit src version; cargoLock.lockFile = ./Cargo.lock; nativeBuildInputs = [ pkg-config ] ++ lib.optionals stdenv.targetPlatform.isDarwin [ targetPackages.darwin.apple_sdk.frameworks.CoreServices ]; buildInputs = with targetPackages; [ dav1d ] ++ lib.optionals (stdenv.targetPlatform.isLinux || stdenv.targetPlatform.isWindows) [ vulkan-loader ] ++ lib.optionals stdenv.targetPlatform.isLinux [ makeWrapper wayland libxkbcommon libGL xorg.libXcursor xorg.libXrandr xorg.libXi xorg.libX11 xorg.libxcb bash ] ++ lib.optionals stdenv.targetPlatform.isDarwin [ makeWrapper darwin.apple_sdk.frameworks.Cocoa darwin.apple_sdk.frameworks.Metal darwin.apple_sdk.frameworks.CoreVideo darwin.apple_sdk.frameworks.QuartzCore ]; CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER = lib.optionalString stdenv.targetPlatform.isWindows "${stdenv.cc.targetPrefix}gcc"; NIX_LDFLAGS = lib.optionalString stdenv.targetPlatform.isDarwin "-framework CoreFoundation"; postInstall = lib.optionalString stdenv.targetPlatform.isLinux '' wrapProgram $out/bin/${pname} \ --prefix PATH : ${lib.makeBinPath [ bash ]} \ --set LD_LIBRARY_PATH ${lib.makeLibraryPath buildInputs} '' + lib.optionalString stdenv.targetPlatform.isWindows '' mkdir -p $out/bin cp ${pkgs.vulkan-loader}/bin/vulkan-1.dll $out/bin/ ''; doCheck = false; meta = { description = "Cross-platform WSYWIG Game Engine"; license = lib.licenses.mit; platforms = lib.platforms.all; mainProgram = "zenyx"; }; }