From c0da4fb02b336473cf19fd262ff489c6f223d457 Mon Sep 17 00:00:00 2001 From: Martino Fontana Date: Mon, 21 Nov 2022 21:49:11 +0100 Subject: [PATCH 1/5] vkBasalt: rename to vkbasalt https://nixos.org/manual/nixpkgs/stable/#sec-package-naming --- pkgs/tools/graphics/{vkBasalt => vkbasalt}/default.nix | 6 +++--- pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) rename pkgs/tools/graphics/{vkBasalt => vkbasalt}/default.nix (90%) diff --git a/pkgs/tools/graphics/vkBasalt/default.nix b/pkgs/tools/graphics/vkbasalt/default.nix similarity index 90% rename from pkgs/tools/graphics/vkBasalt/default.nix rename to pkgs/tools/graphics/vkbasalt/default.nix index 5ace5af97e50..0d5139ce20bd 100644 --- a/pkgs/tools/graphics/vkBasalt/default.nix +++ b/pkgs/tools/graphics/vkbasalt/default.nix @@ -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 { @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { # 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 \ + ln -s ${vkbasalt32}/share/vulkan/implicit_layer.d/vkBasalt.json \ "$out/share/vulkan/implicit_layer.d/vkBasalt32.json" ''; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 0d4554674b2d..8a503f5dde4c 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1563,6 +1563,7 @@ mapAliases ({ 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 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d772322dab7f..88d6bd9d5897 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12649,8 +12649,8 @@ with pkgs; vix = callPackage ../tools/misc/vix { }; - vkBasalt = callPackage ../tools/graphics/vkBasalt { - vkBasalt32 = pkgsi686Linux.vkBasalt; + vkbasalt = callPackage ../tools/graphics/vkbasalt { + vkbasalt32 = pkgsi686Linux.vkbasalt; }; vkmark = callPackage ../tools/graphics/vkmark { }; From f2521e084d72414554d33e33176a86326b41d6ea Mon Sep 17 00:00:00 2001 From: Martino Fontana Date: Mon, 21 Nov 2022 22:13:05 +0100 Subject: [PATCH 2/5] vkbasalt: install default configuration file Needed for programs like vkbasalt-cli. For vkbasalt itself, this configuration has last priority. --- pkgs/tools/graphics/vkbasalt/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/tools/graphics/vkbasalt/default.nix b/pkgs/tools/graphics/vkbasalt/default.nix index 0d5139ce20bd..9423e4caa688 100644 --- a/pkgs/tools/graphics/vkbasalt/default.nix +++ b/pkgs/tools/graphics/vkbasalt/default.nix @@ -26,8 +26,9 @@ 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") '' + 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" ''; From d6fe5fdad27c3c1fb5dcfdb6f4020a9682472b8e Mon Sep 17 00:00:00 2001 From: Martino Fontana Date: Mon, 21 Nov 2022 23:04:34 +0100 Subject: [PATCH 3/5] vkbasalt-cli: init at 3.1.1 --- pkgs/tools/graphics/vkbasalt-cli/default.nix | 31 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 pkgs/tools/graphics/vkbasalt-cli/default.nix diff --git a/pkgs/tools/graphics/vkbasalt-cli/default.nix b/pkgs/tools/graphics/vkbasalt-cli/default.nix new file mode 100644 index 000000000000..0d54f695e9af --- /dev/null +++ b/pkgs/tools/graphics/vkbasalt-cli/default.nix @@ -0,0 +1,31 @@ +{ 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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 88d6bd9d5897..6ca265218a2c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12653,6 +12653,8 @@ with pkgs; vkbasalt32 = pkgsi686Linux.vkbasalt; }; + vkbasalt-cli = callPackage ../tools/graphics/vkbasalt-cli { }; + vkmark = callPackage ../tools/graphics/vkmark { }; vncrec = callPackage ../tools/video/vncrec { }; From f560c82d84ce69552e5be47a6b1b46520c77e61e Mon Sep 17 00:00:00 2001 From: Martino Fontana Date: Mon, 21 Nov 2022 23:52:40 +0100 Subject: [PATCH 4/5] bottles: 2022.10.14.1 -> 2022.11.14, fix vulkan_icd.patch --- pkgs/applications/misc/bottles/default.nix | 14 +++++++++++--- pkgs/applications/misc/bottles/vulkan_icd.patch | 12 +++++++----- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/pkgs/applications/misc/bottles/default.nix b/pkgs/applications/misc/bottles/default.nix index 3ac928a3d36f..3563f06adf89 100644 --- a/pkgs/applications/misc/bottles/default.nix +++ b/pkgs/applications/misc/bottles/default.nix @@ -19,9 +19,12 @@ , p7zip , xdpyinfo , imagemagick +, lsb-release +, pciutils , procps , gamescope , mangohud +, vkbasalt-cli , vmtouch , wine , bottlesExtraLibraries ? pkgs: [ ] # extra packages to add to steam.run multiPkgs @@ -39,13 +42,13 @@ let in python3Packages.buildPythonApplication rec { pname = "bottles"; - version = "2022.10.14.1"; + version = "2022.11.14"; src = fetchFromGitHub { owner = "bottlesdevs"; repo = pname; rev = version; - sha256 = "sha256-FO91GSGlc2f3TSLrlmRDPi5p933/Y16tdEpX4RcKhL0="; + sha256 = "sha256-bigrJtqx9iZURYojwxlGe7xSGWS13wSaGcrTTROP9J8="; }; patches = [ ./vulkan_icd.patch ]; @@ -101,12 +104,17 @@ python3Packages.buildPythonApplication rec { p7zip xdpyinfo imagemagick - procps + vkbasalt-cli gamescope mangohud vmtouch wine + + # Undocumented (subprocess.Popen()) + lsb-release + pciutils + procps ]; format = "other"; diff --git a/pkgs/applications/misc/bottles/vulkan_icd.patch b/pkgs/applications/misc/bottles/vulkan_icd.patch index d638917151ea..ff376e136bb2 100644 --- a/pkgs/applications/misc/bottles/vulkan_icd.patch +++ b/pkgs/applications/misc/bottles/vulkan_icd.patch @@ -1,13 +1,15 @@ 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 += [ From 0e598024620a49c16ed8f95f474ab58b96cf7041 Mon Sep 17 00:00:00 2001 From: Martino Fontana Date: Tue, 22 Nov 2022 14:59:09 +0100 Subject: [PATCH 5/5] bottles: wrap in FHS --- pkgs/applications/misc/bottles/default.nix | 32 +------ pkgs/applications/misc/bottles/fhsenv.nix | 101 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 6 +- 3 files changed, 106 insertions(+), 33 deletions(-) create mode 100644 pkgs/applications/misc/bottles/fhsenv.nix diff --git a/pkgs/applications/misc/bottles/default.nix b/pkgs/applications/misc/bottles/default.nix index 3563f06adf89..05a49db76ad3 100644 --- a/pkgs/applications/misc/bottles/default.nix +++ b/pkgs/applications/misc/bottles/default.nix @@ -14,7 +14,6 @@ , gtk4 , gtksourceview5 , libadwaita -, steam , cabextract , p7zip , xdpyinfo @@ -26,46 +25,20 @@ , 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"; + pname = "bottles-unwrapped"; version = "2022.11.14"; src = fetchFromGitHub { owner = "bottlesdevs"; - repo = pname; + repo = "bottles"; rev = version; 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 @@ -109,7 +82,6 @@ python3Packages.buildPythonApplication rec { gamescope mangohud vmtouch - wine # Undocumented (subprocess.Popen()) lsb-release diff --git a/pkgs/applications/misc/bottles/fhsenv.nix b/pkgs/applications/misc/bottles/fhsenv.nix new file mode 100644 index 000000000000..dfb0d36f64dd --- /dev/null +++ b/pkgs/applications/misc/bottles/fhsenv.nix @@ -0,0 +1,101 @@ +{ 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; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6ca265218a2c..4d320f893c80 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27752,9 +27752,9 @@ with pkgs; 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 { };