summary refs log tree commit diff
path: root/pkgs/by-name/dx/dxvk/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/dx/dxvk/package.nix')
-rw-r--r--pkgs/by-name/dx/dxvk/package.nix52
1 files changed, 52 insertions, 0 deletions
diff --git a/pkgs/by-name/dx/dxvk/package.nix b/pkgs/by-name/dx/dxvk/package.nix
new file mode 100644
index 00000000000..88b7e5b104f
--- /dev/null
+++ b/pkgs/by-name/dx/dxvk/package.nix
@@ -0,0 +1,52 @@
+{ lib
+, stdenvNoCC
+, fetchFromGitHub
+, pkgsCross
+, stdenv
+, bash
+}:
+
+stdenvNoCC.mkDerivation (finalAttrs:
+  let
+    dxvk32 = if stdenv.isDarwin
+      then pkgsCross.mingw32.dxvk_1.override { enableMoltenVKCompat = true; }
+      else pkgsCross.mingw32.dxvk_2;
+    dxvk64 = if stdenv.isDarwin
+      then pkgsCross.mingwW64.dxvk_1.override { enableMoltenVKCompat = true; }
+      else pkgsCross.mingwW64.dxvk_2;
+  in
+  {
+    pname = "dxvk";
+    inherit (dxvk64) version;
+
+    outputs = [ "out" "bin" "lib" ];
+
+    dontUnpack = true;
+    dontConfigure = true;
+    dontBuild = true;
+
+    installPhase = ''
+      mkdir -p $out/bin $bin $lib
+      substitute ${./setup_dxvk.sh} $out/bin/setup_dxvk.sh \
+        --subst-var-by bash ${bash} \
+        --subst-var-by dxvk32 ${dxvk32} \
+        --subst-var-by dxvk64 ${dxvk64} \
+        --subst-var-by mcfgthreads32 "${pkgsCross.mingw32.windows.mcfgthreads_pre_gcc_13}" \
+        --subst-var-by mcfgthreads64 "${pkgsCross.mingwW64.windows.mcfgthreads_pre_gcc_13}"
+      chmod a+x $out/bin/setup_dxvk.sh
+      declare -A dxvks=( [x32]=${dxvk32} [x64]=${dxvk64} )
+      for arch in "''${!dxvks[@]}"; do
+        ln -s "''${dxvks[$arch]}/bin" $bin/$arch
+        ln -s "''${dxvks[$arch]}/lib" $lib/$arch
+      done
+    '';
+
+    meta = {
+      description = "Setup script for DXVK";
+      homepage = "https://github.com/doitsujin/dxvk";
+      changelog = "https://github.com/doitsujin/dxvk/releases";
+      maintainers = [ lib.maintainers.reckenrode ];
+      license = lib.licenses.zlib;
+      platforms = [ "x86_64-darwin" "i686-linux" "x86_64-linux" ];
+    };
+  })