{ lib, fetchFromGitHub , 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, wineWowPackages , freetype, p7zip, gamemode , 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 ] ++ bottlesExtraLibraries pkgs; extraPkgs = pkgs: [ ] ++ bottlesExtraPkgs pkgs; }).run; in python3Packages.buildPythonApplication rec { pname = "bottles"; version = "2022.2.14-trento"; sha256 = "GtVC3JfVoooJ+MuF9r1W3J8RfXNKalaIgecv1ner7GA="; src = fetchFromGitHub { owner = "bottlesdevs"; repo = pname; rev = version; inherit sha256; }; postPatch = '' chmod +x build-aux/meson/postinstall.py patchShebangs build-aux/meson/postinstall.py ''; nativeBuildInputs = [ meson ninja pkg-config wrapGAppsHook gettext appstream-glib desktop-file-utils ]; buildInputs = [ gdk-pixbuf glib gobject-introspection gsettings-desktop-schemas gspell gtk3 gtksourceview4 libhandy libnotify webkitgtk gnome.adwaita-icon-theme ]; propagatedBuildInputs = with python3Packages; [ pyyaml pytoml requests pycairo pygobject3 lxml dbus-python gst-python liblarch patool markdown ] ++ [ steam-run xdg-utils pciutils cabextract wineWowPackages.minimal freetype p7zip gamemode # programs.gamemode.enable ]; format = "other"; strictDeps = false; # broken with gobject-introspection setup hook, see https://github.com/NixOS/nixpkgs/issues/56943 dontWrapGApps = true; # prevent double wrapping preConfigure = '' patchShebangs build-aux/meson/postinstall.py substituteInPlace src/backend/wine/winecommand.py \ --replace '= f"{Paths.runners}' '= f"${steam-run}/bin/steam-run {Paths.runners}' ''; preFixup = '' makeWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; meta = with lib; { description = "An easy-to-use wineprefix manager"; homepage = "https://usebottles.com/"; license = licenses.gpl3Only; maintainers = with maintainers; [ bloomvdomino psydvl shamilton ]; platforms = platforms.linux; }; }