Unverified Commit 2dea0f4c authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

Merge pull request #202265 from SuperSamus/bottles

parents bf76dcab 0e598024
Loading
Loading
Loading
Loading
+13 −33
Original line number Diff line number Diff line
@@ -14,55 +14,31 @@
, gtk4
, gtksourceview5
, libadwaita
, steam
, cabextract
, p7zip
, xdpyinfo
, imagemagick
, lsb-release
, pciutils
, procps
, gamescope
, mangohud
, vkbasalt-cli
, vmtouch
, wine
, bottlesExtraLibraries ? pkgs: [ ] # extra packages to add to steam.run multiPkgs
, bottlesExtraPkgs ? pkgs: [ ] # extra packages to add to steam.run targetPkgs
}:

let
  steam-run = (steam.override {
    # required by wine runner `caffe`
    extraLibraries = pkgs: with pkgs; [ libunwind libusb1 gnutls ]
      ++ bottlesExtraLibraries pkgs;
    extraPkgs = pkgs: [ ]
      ++ bottlesExtraPkgs pkgs;
  }).run;
in
python3Packages.buildPythonApplication rec {
  pname = "bottles";
  version = "2022.10.14.1";
  pname = "bottles-unwrapped";
  version = "2022.11.14";

  src = fetchFromGitHub {
    owner = "bottlesdevs";
    repo = pname;
    repo = "bottles";
    rev = version;
    sha256 = "sha256-FO91GSGlc2f3TSLrlmRDPi5p933/Y16tdEpX4RcKhL0=";
    sha256 = "sha256-bigrJtqx9iZURYojwxlGe7xSGWS13wSaGcrTTROP9J8=";
  };

  patches = [ ./vulkan_icd.patch ];

  postPatch = ''
    chmod +x build-aux/meson/postinstall.py
    patchShebangs build-aux/meson/postinstall.py

    substituteInPlace bottles/backend/wine/winecommand.py \
      --replace \
        "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}\""
    '';

  nativeBuildInputs = [
    blueprint-compiler
    meson
@@ -101,12 +77,16 @@ python3Packages.buildPythonApplication rec {
    p7zip
    xdpyinfo
    imagemagick
    procps
    vkbasalt-cli

    gamescope
    mangohud
    vmtouch
    wine

    # Undocumented (subprocess.Popen())
    lsb-release
    pciutils
    procps
  ];

  format = "other";
+101 −0
Original line number Diff line number Diff line
{ lib
, buildFHSUserEnvBubblewrap
, symlinkJoin
, bottles-unwrapped
, extraPkgs ? pkgs: [ ]
, extraLibraries ? pkgs: [ ]
}:

let fhsEnv = {
  targetPkgs = pkgs: with pkgs; [
    bottles-unwrapped
    vkbasalt
  ] ++ extraPkgs pkgs;

  multiPkgs =
    let
      xorgDeps = pkgs: with pkgs.xorg; [
        libpthreadstubs
        libSM
        libX11
        libXaw
        libxcb
        libXcomposite
        libXcursor
        libXdmcp
        libXext
        libXi
        libXinerama
        libXmu
        libXrandr
        libXrender
        libXv
        libXxf86vm
      ];
    in
    pkgs: with pkgs; [
      # https://wiki.winehq.org/Building_Wine
      alsa-lib
      cups
      dbus
      fontconfig
      freetype
      glib
      gnutls
      libglvnd
      gsm
      gst_all_1.gstreamer
      gst_all_1.gst-plugins-base
      libgphoto2
      libjpeg_turbo
      libkrb5
      libpcap
      libpng
      libpulseaudio
      libtiff
      libunwind
      libusb1
      libv4l
      libxml2
      mpg123
      ocl-icd
      openldap
      samba4
      sane-backends
      SDL2
      udev
      vulkan-loader

      # https://www.gloriouseggroll.tv/how-to-get-out-of-wine-dependency-hell/
      alsa-plugins
      dosbox
      giflib
      gtk3
      libva
      libxslt
      ncurses
      openal

      # Steam runtime
      libgcrypt
      libgpg-error
      p11-kit
      zlib # Freetype
    ] ++ xorgDeps pkgs
    ++ extraLibraries pkgs;
};
in
symlinkJoin {
  name = "bottles";
  paths = [
    (buildFHSUserEnvBubblewrap (fhsEnv // { name = "bottles"; runScript = "bottles"; }))
    (buildFHSUserEnvBubblewrap (fhsEnv // { name = "bottles-cli"; runScript = "bottles-cli"; }))
  ];
  postBuild = ''
    mkdir -p $out/share
    ln -s ${bottles-unwrapped}/share/applications $out/share
    ln -s ${bottles-unwrapped}/share/icons $out/share
  '';

  inherit (bottles-unwrapped) meta;
}
+7 −5
Original line number Diff line number Diff line
diff --git a/bottles/backend/utils/vulkan.py b/bottles/backend/utils/vulkan.py
index 6673493..07f70d1 100644
index 6673493..9191004 100644
--- a/bottles/backend/utils/vulkan.py
+++ b/bottles/backend/utils/vulkan.py
@@ -29,6 +29,8 @@ class VulkanUtils:
@@ -28,7 +28,9 @@ class VulkanUtils:
         "/usr/share/vulkan",
         "/etc/vulkan",
         "/usr/local/share/vulkan",
         "/usr/local/etc/vulkan"
+        "/run/opengl-driver/share/vulkan/",
+        "/run/opengl-driver-32/share/vulkan/",
-        "/usr/local/etc/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 += [
+31 −0
Original line number Diff line number Diff line
{ lib
, python3Packages
, fetchFromGitLab
, vkbasalt
}:

python3Packages.buildPythonApplication rec {
  pname = "vkbasalt-cli";
  version = "3.1.1";

  src = fetchFromGitLab {
    owner = "TheEvilSkeleton";
    repo = pname;
    rev = "v${version}";
    sha256 = "sha256-4MFqndnvwAsqyer9kMNuCZFP/Xdl7W//AyCe7n83328=";
  };

  postPatch = ''
    substituteInPlace vkbasalt/lib.py \
      --replace /usr ${vkbasalt}
  '';

  pythonImportsCheck = [ "vkbasalt.lib" ];

  meta = with lib; {
    description = "Command-line utility for vkBasalt";
    homepage = "https://gitlab.com/TheEvilSkeleton/vkbasalt-cli";
    license = with licenses; [ lgpl3Only gpl3Only ];
    maintainers = with maintainers; [ martfont ];
  };
}
+5 −4
Original line number Diff line number Diff line
@@ -8,11 +8,11 @@
, libX11
, spirv-headers
, vulkan-headers
, vkBasalt32
, vkbasalt32
}:

stdenv.mkDerivation rec {
  pname = "vkBasalt";
  pname = "vkbasalt";
  version = "0.3.2.6";

  src = fetchFromGitHub {
@@ -26,9 +26,10 @@ stdenv.mkDerivation rec {
  buildInputs = [ libX11 spirv-headers vulkan-headers ];
  mesonFlags = [ "-Dappend_libdir_vkbasalt=true" ];

  # Include 32bit layer in 64bit build
  postInstall = lib.optionalString (stdenv.hostPlatform.system == "x86_64-linux") ''
    ln -s ${vkBasalt32}/share/vulkan/implicit_layer.d/vkBasalt.json \
    install -Dm 644 $src/config/vkBasalt.conf $out/share/vkBasalt/vkBasalt.conf
    # Include 32bit layer in 64bit build
    ln -s ${vkbasalt32}/share/vulkan/implicit_layer.d/vkBasalt.json \
      "$out/share/vulkan/implicit_layer.d/vkBasalt32.json"
  '';

Loading