Merge pull request #202265 from SuperSamus/bottles

Fixes https://github.com/NixOS/nixpkgs/issues/203051

Sandro 2dea0f4c bf76dcab

Changed files
+165 -47
pkgs
applications
tools
graphics
vkbasalt
vkbasalt-cli
top-level
+13 -33
pkgs/applications/misc/bottles/default.nix
···
, 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
···
p7zip
xdpyinfo
imagemagick
-
procps
+
vkbasalt-cli
gamescope
mangohud
vmtouch
-
wine
+
+
# Undocumented (subprocess.Popen())
+
lsb-release
+
pciutils
+
procps
];
format = "other";
+101
pkgs/applications/misc/bottles/fhsenv.nix
···
+
{ 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
pkgs/applications/misc/bottles/vulkan_icd.patch
···
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 += [
+5 -4
pkgs/tools/graphics/vkBasalt/default.nix pkgs/tools/graphics/vkbasalt/default.nix
···
, libX11
, spirv-headers
, vulkan-headers
-
, vkBasalt32
+
, vkbasalt32
}:
stdenv.mkDerivation rec {
-
pname = "vkBasalt";
+
pname = "vkbasalt";
version = "0.3.2.6";
src = fetchFromGitHub {
···
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"
'';
+31
pkgs/tools/graphics/vkbasalt-cli/default.nix
···
+
{ 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 ];
+
};
+
}
+1
pkgs/top-level/aliases.nix
···
virtmanager = virt-manager; # Added 2019-10-29
virtmanager-qt = virt-manager-qt; # Added 2019-10-29
virtviewer = throw "'virtviewer' has been renamed to/replaced by 'virt-viewer'"; # Converted to throw 2022-02-22
+
vkBasalt = vkbasalt; # Added 2022-11-22
vnc2flv = throw "vnc2flv has been removed: abandoned by upstream"; # Added 2022-03-21
vorbisTools = throw "'vorbisTools' has been renamed to/replaced by 'vorbis-tools'"; # Converted to throw 2022-02-22
vtun = throw "vtune has been removed as it's unmaintained upstream"; # Added 2021-10-29
+7 -5
pkgs/top-level/all-packages.nix
···
vix = callPackage ../tools/misc/vix { };
-
vkBasalt = callPackage ../tools/graphics/vkBasalt {
-
vkBasalt32 = pkgsi686Linux.vkBasalt;
+
vkbasalt = callPackage ../tools/graphics/vkbasalt {
+
vkbasalt32 = pkgsi686Linux.vkbasalt;
+
+
vkbasalt-cli = callPackage ../tools/graphics/vkbasalt-cli { };
vkmark = callPackage ../tools/graphics/vkmark { };
···
bonzomatic = callPackage ../applications/editors/bonzomatic { };
-
bottles = callPackage ../applications/misc/bottles {
-
wine = null;
-
};
+
bottles = callPackage ../applications/misc/bottles/fhsenv.nix { };
+
+
bottles-unwrapped = callPackage ../applications/misc/bottles { };
brave = callPackage ../applications/networking/browsers/brave { };