diff --git a/pkgs/games/grapejuice/default.nix b/pkgs/games/grapejuice/default.nix new file mode 100644 index 000000000000..1cb27f7b8c52 --- /dev/null +++ b/pkgs/games/grapejuice/default.nix @@ -0,0 +1,95 @@ +{ lib +, fetchFromGitLab +, gobject-introspection +, python3Packages +, gtk3 +, wrapGAppsHook +, glib +, cairo +, desktop-file-utils +, xdg-utils +, xdg-user-dirs +, wine +, winetricks +}: + +python3Packages.buildPythonApplication rec { + pname = "grapejuice"; + version = "3.12.5"; + + src = fetchFromGitLab { + owner = "BrinkerVII"; + repo = "grapejuice"; + rev = "v${version}"; + sha256 = "1xgxyfwwghy9l17i6y40axdrpp4fgxgdr5y97flwmfivif01ifs1"; + }; + + nativeBuildInputs = [ + gobject-introspection + desktop-file-utils + glib + gtk3 + wrapGAppsHook + ]; + + buildInputs = [ + cairo + ]; + + propagatedBuildInputs = with python3Packages; [ + requests + pygobject3 + dbus-python + packaging + psutil + setuptools + ]; + + dontWrapGApps = true; + + makeWrapperArgs = [ + "\${gappsWrapperArgs[@]}" + "--prefix PATH : ${lib.makeBinPath [ xdg-user-dirs xdg-utils wine (winetricks.override { wine = wine; }) ]}" + ]; + + postPatch = '' + substituteInPlace requirements.txt \ + --replace "PyGObject-stubs" "" + + substituteInPlace src/grapejuice_common/assets/desktop/grapejuice.desktop \ + --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \ + --replace \$GRAPEJUICE_ICON grapejuice + + substituteInPlace src/grapejuice_common/assets/desktop/roblox-player.desktop \ + --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \ + --replace \$PLAYER_ICON "grapejuice-roblox-player" + + substituteInPlace src/grapejuice_common/assets/desktop/roblox-app.desktop \ + --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \ + --replace \$PLAYER_ICON "grapejuice-roblox-player" + + substituteInPlace src/grapejuice_common/assets/desktop/roblox-studio.desktop \ + --replace \$GRAPEJUICE_EXECUTABLE "$out/bin/grapejuice" \ + --replace \$STUDIO_ICON "grapejuice-roblox-studio" + ''; + + postInstall = '' + mkdir -p "$out/share/icons" "$out/share/applications" "$out/share/mime/packages" + cp -r src/grapejuice_common/assets/desktop/* $out/share/applications/ + cp -r src/grapejuice_common/assets/icons $out/share/ + cp src/grapejuice_common/assets/mime_xml/*.xml $out/share/mime/packages/ + ''; + + # No tests + doCheck = false; + + pythonImportsCheck = [ "grapejuice" ]; + + meta = with lib; { + homepage = "https://gitlab.com/brinkervii/grapejuice"; + description = "Simple Wine+Roblox management tool"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ artturin ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0c853ce2d793..4fdac444e282 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2813,6 +2813,10 @@ in gti = callPackage ../tools/misc/gti { }; + grapejuice = callPackage ../games/grapejuice { + wine = wineWowPackages.unstable; + }; + hdate = callPackage ../applications/misc/hdate { }; heatseeker = callPackage ../tools/misc/heatseeker { };