zipline: refactor environment variables (#377101)
[NixPkgs.git] / pkgs / by-name / dx / dxvk / package.nix
blob144bfe33609b576b626725293b8fb9d0937fc176
2   lib,
3   stdenvNoCC,
4   overrideCC,
5   pkgsCross,
6   bash,
7 }:
9 stdenvNoCC.mkDerivation (
10   finalAttrs:
11   let
12     useWin32ThreadModel =
13       stdenv:
14       overrideCC stdenv (
15         stdenv.cc.override (old: {
16           cc = old.cc.override {
17             threadsCross = {
18               model = "win32";
19               package = null;
20             };
21           };
22         })
23       );
25     mingw32Stdenv = useWin32ThreadModel pkgsCross.mingw32.stdenv;
26     mingwW64Stdenv = useWin32ThreadModel pkgsCross.mingwW64.stdenv;
28     dxvk32 =
29       if stdenvNoCC.hostPlatform.isDarwin then
30         pkgsCross.mingw32.dxvk_1.override {
31           stdenv = mingw32Stdenv;
32           enableMoltenVKCompat = true;
33         }
34       else
35         pkgsCross.mingw32.dxvk_2.override { stdenv = mingw32Stdenv; };
37     dxvk64 =
38       if stdenvNoCC.hostPlatform.isDarwin then
39         pkgsCross.mingwW64.dxvk_1.override {
40           stdenv = mingwW64Stdenv;
41           enableMoltenVKCompat = true;
42         }
43       else
44         pkgsCross.mingwW64.dxvk_2.override { stdenv = mingwW64Stdenv; };
45   in
46   {
47     pname = "dxvk";
48     inherit (dxvk64) version;
50     outputs = [
51       "out"
52       "bin"
53       "lib"
54     ];
56     strictDeps = true;
58     buildCommand = ''
59       mkdir -p $out/bin $bin $lib
60       substitute ${./setup_dxvk.sh} $out/bin/setup_dxvk.sh \
61         --subst-var-by bash ${bash} \
62         --subst-var-by dxvk32 ${dxvk32} \
63         --subst-var-by dxvk64 ${dxvk64} \
64         --subst-var-by version ${finalAttrs.version}
65       chmod a+x $out/bin/setup_dxvk.sh
66       declare -A dxvks=( [x32]=${dxvk32} [x64]=${dxvk64} )
67       for arch in "''${!dxvks[@]}"; do
68         ln -s "''${dxvks[$arch]}/bin" $bin/$arch
69         ln -s "''${dxvks[$arch]}/lib" $lib/$arch
70       done
71     '';
73     passthru = {
74       inherit dxvk32 dxvk64;
75     };
77     __structuredAttrs = true;
79     meta = {
80       description = "Setup script for DXVK";
81       mainProgram = "setup_dxvk.sh";
82       homepage = "https://github.com/doitsujin/dxvk";
83       changelog = "https://github.com/doitsujin/dxvk/releases";
84       maintainers = [ lib.maintainers.reckenrode ];
85       license = lib.licenses.zlib;
86       platforms = [
87         "x86_64-darwin"
88         "i686-linux"
89         "x86_64-linux"
90       ];
91     };
92   }