Merge pull request #196817 from SuperSamus/bottles

Closes https://github.com/NixOS/nixpkgs/issues/192292
closes https://github.com/NixOS/nixpkgs/issues/182539
closes https://github.com/NixOS/nixpkgs/issues/181501

Sandro f3bf8a1b 53dff5c0

Changed files
+139 -40
pkgs
applications
development
python-modules
fvs
icoextract
top-level
+59 -39
pkgs/applications/misc/bottles/default.nix
···
-
{ 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
+
{ 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
, 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";
-
version = "2022.5.28-trento-3";
+
version = "2022.10.14.1";
src = fetchFromGitHub {
owner = "bottlesdevs";
repo = pname;
rev = version;
-
sha256 = "sha256-KIDLRqDLFTsVAczRpTchnUtKJfVHqbYzf8MhIR5UdYY=";
+
sha256 = "sha256-FO91GSGlc2f3TSLrlmRDPi5p933/Y16tdEpX4RcKhL0=";
};
+
patches = [ ./vulkan_icd.patch ];
+
postPatch = ''
chmod +x build-aux/meson/postinstall.py
patchShebangs build-aux/meson/postinstall.py
-
substituteInPlace src/backend/wine/winecommand.py \
+
substituteInPlace bottles/backend/wine/winecommand.py \
--replace \
-
'self.__get_runner()' \
-
'(lambda r: (f"${steam-run}/bin/steam-run {r}", r)[r == "wine" or r == "wine64"])(self.__get_runner())'
-
'';
+
"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
ninja
pkg-config
-
wrapGAppsHook
-
gettext
+
wrapGAppsHook4
+
gtk4 # gtk4-update-icon-cache
appstream-glib
desktop-file-utils
];
buildInputs = [
-
gdk-pixbuf
-
glib
-
gobject-introspection
-
gsettings-desktop-schemas
-
gspell
-
gtk3
-
gtksourceview4
-
libhandy
-
libnotify
-
webkitgtk
-
gnome.adwaita-icon-theme
+
librsvg
+
gtk4
+
gtksourceview5
+
libadwaita
];
propagatedBuildInputs = with python3Packages; [
pyyaml
-
pytoml
requests
-
pycairo
pygobject3
-
lxml
-
dbus-python
-
gst-python
-
liblarch
patool
markdown
+
fvs
+
pefile
+
urllib3
+
chardet
+
certifi
+
idna
+
pillow
+
orjson
+
icoextract
] ++ [
-
steam-run
-
xdg-utils
-
pciutils
cabextract
-
wine
-
freetype
p7zip
-
gamemode # programs.gamemode.enable
+
xdpyinfo
+
imagemagick
+
procps
+
+
gamescope
mangohud
+
vmtouch
+
wine
];
format = "other";
-
strictDeps = false; # broken with gobject-introspection setup hook, see https://github.com/NixOS/nixpkgs/issues/56943
dontWrapGApps = true; # prevent double wrapping
preFixup = ''
+13
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
+
--- 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 += [
+31
pkgs/development/python-modules/fvs/default.nix
···
+
{ 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 ];
+
};
+
}
+31
pkgs/development/python-modules/icoextract/default.nix
···
+
{ 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 ];
+
};
+
}
+1 -1
pkgs/top-level/all-packages.nix
···
bonzomatic = callPackage ../applications/editors/bonzomatic { };
bottles = callPackage ../applications/misc/bottles {
-
wine = wineWowPackages.minimal;
+
wine = null;
brave = callPackage ../applications/networking/browsers/brave { };
+4
pkgs/top-level/python-packages.nix
···
fuzzywuzzy = callPackage ../development/python-modules/fuzzywuzzy { };
+
fvs = callPackage ../development/python-modules/fvs { };
+
fx2 = callPackage ../development/python-modules/fx2 { };
g2pkk = callPackage ../development/python-modules/g2pkk { };
···
ics = callPackage ../development/python-modules/ics { };
idasen = callPackage ../development/python-modules/idasen { };
+
+
icoextract = callPackage ../development/python-modules/icoextract { };
icontract = callPackage ../development/python-modules/icontract { };