diff options
Diffstat (limited to 'pkgs/by-name/dx/dxvk/package.nix')
-rw-r--r-- | pkgs/by-name/dx/dxvk/package.nix | 82 |
1 files changed, 60 insertions, 22 deletions
diff --git a/pkgs/by-name/dx/dxvk/package.nix b/pkgs/by-name/dx/dxvk/package.nix index d3639215057f2..89defd092b0e4 100644 --- a/pkgs/by-name/dx/dxvk/package.nix +++ b/pkgs/by-name/dx/dxvk/package.nix @@ -1,38 +1,67 @@ -{ lib -, stdenvNoCC -, fetchFromGitHub -, pkgsCross -, stdenv -, bash +{ + lib, + stdenvNoCC, + overrideCC, + pkgsCross, + bash, }: -stdenvNoCC.mkDerivation (finalAttrs: +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; + useWin32ThreadModel = + stdenv: + overrideCC stdenv ( + stdenv.cc.override (old: { + cc = old.cc.override { + threadsCross = { + model = "win32"; + package = null; + }; + }; + }) + ); + + mingw32Stdenv = useWin32ThreadModel pkgsCross.mingw32.stdenv; + mingwW64Stdenv = useWin32ThreadModel pkgsCross.mingwW64.stdenv; + + dxvk32 = + if stdenvNoCC.isDarwin then + pkgsCross.mingw32.dxvk_1.override { + stdenv = mingw32Stdenv; + enableMoltenVKCompat = true; + } + else + pkgsCross.mingw32.dxvk_2.override { stdenv = mingw32Stdenv; }; + + dxvk64 = + if stdenvNoCC.isDarwin then + pkgsCross.mingwW64.dxvk_1.override { + stdenv = mingwW64Stdenv; + enableMoltenVKCompat = true; + } + else + pkgsCross.mingwW64.dxvk_2.override { stdenv = mingwW64Stdenv; }; in { pname = "dxvk"; inherit (dxvk64) version; - outputs = [ "out" "bin" "lib" ]; + outputs = [ + "out" + "bin" + "lib" + ]; - dontUnpack = true; - dontConfigure = true; - dontBuild = true; + strictDeps = true; - installPhase = '' + buildCommand = '' 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}" + --subst-var-by version ${finalAttrs.version} chmod a+x $out/bin/setup_dxvk.sh declare -A dxvks=( [x32]=${dxvk32} [x64]=${dxvk64} ) for arch in "''${!dxvks[@]}"; do @@ -41,6 +70,10 @@ stdenvNoCC.mkDerivation (finalAttrs: done ''; + passthru = { inherit dxvk32 dxvk64; }; + + __structuredAttrs = true; + meta = { description = "Setup script for DXVK"; mainProgram = "setup_dxvk.sh"; @@ -48,6 +81,11 @@ stdenvNoCC.mkDerivation (finalAttrs: changelog = "https://github.com/doitsujin/dxvk/releases"; maintainers = [ lib.maintainers.reckenrode ]; license = lib.licenses.zlib; - platforms = [ "x86_64-darwin" "i686-linux" "x86_64-linux" ]; + platforms = [ + "x86_64-darwin" + "i686-linux" + "x86_64-linux" + ]; }; - }) + } +) |