Change:
Vulkan/dxvk doesnt work on bottles. Vulkan is working correctly on my laptop as vkcube, vulkaninfo and the game im trying to run on bottles (that i ran thru wineWowPackages.staging + dxvk install from the official archive file) run perfectly. Steps to reproduce the behavior: bottles a bottle for gaming a game. the "directx error" pop up. Also, the dxvk log files say that the "VKKHRsurface" extension failed to load. DXVK/Vulkan should work on bottles. ! Please run and paste the result.
Having the exact same Issue on 22.11pre393800. (Raccoon)
If fails then there is a driver issue. Vulkan wont be able to draw anything to screen without it. When it occurs in proton issues it's usually a missing 32bit Vulkan library. Tho there can ofc probably be other causes
update: using the system wine doesn't fix dxvk either. only running thru the command line does. As i said, running it thru wine on the terminal does work, so something in the bottles thing is not working right.
I found the cause: these hardcoded paths right there: With this extra lines in , Vulkan will work on Bottles: I'm not sure if this is the best way to solve it, though. Tested only on a 64-bit bottle (I don't know if 32-bit bottles need to also link ). .
!!! nice find!

Discussion:
<del> { lib, fetchFromGitHub, gitUpdater , meson, ninja, pkg-config, wrapGAppsHook , desktop-file-utils, gsettings-desktop-schemas, libnotify, libhandy, webkitgtk , python3Packages, gettext , appstream-glib, gdk-pixbuf, glib, gobject-introspection, gspell, gtk3, gtksourceview4, gnome , steam, xdg-utils, pciutils, cabextract , freetype, p7zip, gamemode, mangohud </del> <ins> { lib , fetchFromGitHub , fetchFromGitLab , gitUpdater , python3Packages , blueprint-compiler , meson , ninja , pkg-config , wrapGAppsHook4 , appstream-glib , desktop-file-utils , librsvg , gtk4 , gtksourceview5 , libadwaita , steam , cabextract , p7zip , xdpyinfo , imagemagick , procps , gamescope , mangohud , vmtouch </ins> , wine , bottlesExtraLibraries ? pkgs: [ ] # extra packages to add to steam.run multiPkgs , bottlesExtraPkgs ? pkgs: [ ] # extra packages to add to steam.run targetPkgs

in python3Packages.buildPythonApplication rec { pname = "bottles"; <del> version = "2022.5.28-trento-3"; </del> <ins> version = "2022.10.14.1"; </ins> src = fetchFromGitHub { owner = "bottlesdevs"; repo = pname; rev = version; <del> sha256 = "sha256-KIDLRqDLFTsVAczRpTchnUtKJfVHqbYzf8MhIR5UdYY="; </del> <ins> sha256 = "sha256-FO91GSGlc2f3TSLrlmRDPi5p933/Y16tdEpX4RcKhL0="; </ins> }; <ins> patches = [ ./vulkan_icd.patch ]; </ins> postPatch = '' chmod +x build-aux/meson/postinstall.py patchShebangs build-aux/meson/postinstall.py <del> substituteInPlace src/backend/wine/winecommand.py  </del> <ins> substituteInPlace bottles/backend/wine/winecommand.py  </ins> --replace  <del> 'self.__get_runner()'  '(lambda r: (f"${steam-run}/bin/steam-run {r}", r)[r == "wine" or r == "wine64"])(self.__get_runner())' ''; </del> <ins> "command = f"{runner} {command}""  "command = f"{''' if runner == 'wine' or runner == 'wine64' else '${steam-run}/bin/steam-run '}{runner} {command}""  --replace  "command = f"{_picked['entry_point']} {command}""  "command = f"${steam-run}/bin/steam-run {_picked['entry_point']} {command}"" ''; </ins> nativeBuildInputs = [ <ins> blueprint-compiler </ins> meson ninja pkg-config <del> wrapGAppsHook gettext </del> <ins> wrapGAppsHook4 gtk4 # gtk4-update-icon-cache </ins> appstream-glib desktop-file-utils ]; buildInputs = [ <del> gdk-pixbuf glib gobject-introspection gsettings-desktop-schemas gspell gtk3 gtksourceview4 libhandy libnotify webkitgtk gnome.adwaita-icon-theme </del> <ins> librsvg gtk4 gtksourceview5 libadwaita </ins> ]; propagatedBuildInputs = with python3Packages; [ pyyaml <del> pytoml </del> requests <del> pycairo </del> pygobject3 <del> lxml dbus-python gst-python liblarch </del> patool markdown <ins> fvs pefile urllib3 chardet certifi idna pillow orjson icoextract </ins> ] ++ [ <del> steam-run xdg-utils pciutils </del> cabextract <del> wine freetype </del> p7zip <del> gamemode # programs.gamemode.enable </del> <ins> xdpyinfo imagemagick procps gamescope </ins> mangohud <ins> vmtouch wine </ins> ]; format = "other"; <del> strictDeps = false; # broken with gobject-introspection setup hook, see https://github.com/NixOS/nixpkgs/issues/56943 </del> dontWrapGApps = true; # prevent double wrapping preFixup = ''

<ins> diff --git a/bottles/backend/utils/vulkan.py b/bottles/backend/utils/vulkan.py index 6673493..07f70d1 100644 --- a/bottles/backend/utils/vulkan.py +++ b/bottles/backend/utils/vulkan.py @@ -29,6 +29,8 @@ class VulkanUtils: "/etc/vulkan", "/usr/local/share/vulkan", "/usr/local/etc/vulkan" +        "/run/opengl-driver/share/vulkan/", +        "/run/opengl-driver-32/share/vulkan/", ] if "FLATPAK_ID" in os.environ: __vk_icd_dirs += [ </ins>

<ins> { lib, buildPythonPackage, fetchPypi, orjson}: buildPythonPackage rec { pname = "fvs"; version = "0.3.4"; src = fetchPypi { inherit version; pname = "FVS"; extension = "tar.gz"; sha256 = "sha256-yYd0HzdwbqB9kexJjBRRYmdsoWtZtcjCNRz0ZJVM5CI="; }; propagatedBuildInputs = [ orjson ]; # no tests in src doCheck = false; pythonImportsCheck = [ "fvs" ]; meta = with lib; { description = "File Versioning System with hash comparison and data storage to create unlinked states that can be deleted"; homepage = "https://github.com/mirkobrombin/FVS"; license = licenses.mit; maintainers = with maintainers; [ bryanasdev000 ]; }; } </ins>

<ins> { lib, buildPythonPackage, fetchPypi, pefile, pillow}: buildPythonPackage rec { pname = "icoextract"; version = "0.1.4"; src = fetchPypi { inherit pname version; extension = "tar.gz"; sha256 = "sha256-x0GEV0PUbkAzoUJgAqup9bHd7iYttGyzIZNdo8KsFyo="; }; propagatedBuildInputs = [ pefile pillow ]; # tests expect mingw and multiarch doCheck = false; pythonImportsCheck = [ "icoextract" ]; meta = with lib; { description = "Extract icons from Windows PE files"; homepage = "https://github.com/jlu5/icoextract"; license = licenses.mit; maintainers = with maintainers; [ bryanasdev000 ]; }; } </ins>

bonzomatic = callPackage ../applications/editors/bonzomatic { }; bottles = callPackage ../applications/misc/bottles { <del> wine = wineWowPackages.minimal; </del> <ins> wine = null; </ins> }; brave = callPackage ../applications/networking/browsers/brave { };

fuzzywuzzy = callPackage ../development/python-modules/fuzzywuzzy { }; <ins> fvs = callPackage ../development/python-modules/fvs { }; </ins> fx2 = callPackage ../development/python-modules/fx2 { }; galario = toPythonModule (pkgs.galario.override {

idasen = callPackage ../development/python-modules/idasen { }; <ins> icoextract = callPackage ../development/python-modules/icoextract { }; </ins> icontract = callPackage ../development/python-modules/icontract { }; identify = callPackage ../development/python-modules/identify { };