diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/dx/dxvk_2/package.nix')
-rw-r--r-- | nixpkgs/pkgs/by-name/dx/dxvk_2/package.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/dx/dxvk_2/package.nix b/nixpkgs/pkgs/by-name/dx/dxvk_2/package.nix new file mode 100644 index 000000000000..e1fa64ffee05 --- /dev/null +++ b/nixpkgs/pkgs/by-name/dx/dxvk_2/package.nix @@ -0,0 +1,77 @@ +{ lib +, stdenv +, fetchFromGitHub +, pkgsBuildHost +, glslang +, meson +, ninja +, windows +, spirv-headers +, vulkan-headers +, SDL2 +, glfw +, gitUpdater +, sdl2Support ? true +, glfwSupport ? false +}: + +# SDL2 and GLFW support are mutually exclusive. +assert !sdl2Support || !glfwSupport; + +let + isCross = stdenv.hostPlatform != stdenv.targetPlatform; + isWindows = stdenv.hostPlatform.uname.system == "Windows"; +in +stdenv.mkDerivation (finalAttrs: { + pname = "dxvk"; + version = "2.3"; + + src = fetchFromGitHub { + owner = "doitsujin"; + repo = "dxvk"; + rev = "v${finalAttrs.version}"; + hash = "sha256-RU+B0XfphD5HHW/vSzqHLUaGS3E31d5sOLp3lMmrCB8="; + fetchSubmodules = true; # Needed for the DirectX headers and libdisplay-info + }; + + postPatch = '' + substituteInPlace "subprojects/libdisplay-info/tool/gen-search-table.py" \ + --replace "/usr/bin/env python3" "${lib.getBin pkgsBuildHost.python3}/bin/python3" + ''; + + nativeBuildInputs = [ glslang meson ninja ]; + buildInputs = [ spirv-headers vulkan-headers ] + ++ lib.optionals (!isWindows && sdl2Support) [ SDL2 ] + ++ lib.optionals (!isWindows && glfwSupport) [ glfw ] + ++ lib.optionals isWindows [ windows.pthreads ]; + + # Build with the Vulkan SDK in nixpkgs. + preConfigure = '' + rm -rf include/spirv/include include/vulkan/include + mkdir -p include/spirv/include include/vulkan/include + ''; + + mesonFlags = + let + arch = if stdenv.is32bit then "32" else "64"; + in + [ + "--buildtype" "release" + "--prefix" "${placeholder "out"}" + ] + ++ lib.optionals isCross [ "--cross-file" "build-win${arch}.txt" ] + ++ lib.optional glfwSupport "-Ddxvk_native_wsi=glfw"; + + doCheck = !isCross; + + passthru.updateScript = gitUpdater { rev-prefix = "v"; }; + + meta = { + description = "A Vulkan-based translation layer for Direct3D 9/10/11"; + homepage = "https://github.com/doitsujin/dxvk"; + changelog = "https://github.com/doitsujin/dxvk/releases"; + maintainers = [ lib.maintainers.reckenrode ]; + license = lib.licenses.zlib; + platforms = lib.platforms.windows ++ lib.platforms.linux; + }; +}) |