diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix new file mode 100644 index 000000000000..e83c24e22898 --- /dev/null +++ b/pkgs/games/path-of-building/default.nix @@ -0,0 +1,69 @@ +{ stdenv, lib, fetchFromGitHub, runCommand, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }: +let + dataVersion = "2.28.0"; + frontendVersion = "unstable-2023-04-09"; +in +stdenv.mkDerivation { + pname = "path-of-building"; + version = "${dataVersion}-${frontendVersion}"; + + src = fetchFromGitHub { + owner = "ernstp"; + repo = "pobfrontend"; + rev = "9faa19aa362f975737169824c1578d5011487c18"; + hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk="; + }; + + data = runCommand "path-of-building-data" { + src = fetchFromGitHub { + owner = "PathOfBuildingCommunity"; + repo = "PathOfBuilding"; + rev = "v${dataVersion}"; + hash = "sha256-IO6qUE6OcjNibljNzcJQlwji3DZqrBm7cvHedKuAwpM="; + }; + + nativeBuildInputs = [ unzip ]; + } + '' + # I have absolutely no idea how this file is generated + # and I don't think I want to know. The Flatpak also does this. + unzip -j -d $out $src/runtime-win32.zip lua/sha1.lua + + # Install the actual data + cp -r $src/src $src/runtime/lua/*.lua $src/manifest.xml $out + + # Pretend this is an official build so we don't get the ugly "dev mode" warning + substituteInPlace $out/manifest.xml --replace ' $out/src/UpdateCheck.lua + ''; + + nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ]; + buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ]; + dontWrapQtApps = true; + + installPhase = '' + runHook preInstall + install -Dm555 pobfrontend $out/bin/pobfrontend + runHook postInstall + ''; + + postFixup = '' + wrapQtApp $out/bin/pobfrontend \ + --set LUA_PATH "$LUA_PATH" \ + --set LUA_CPATH "$LUA_CPATH" \ + --chdir "$data" + ''; + + meta = { + description = "Offline build planner for Path of Exile"; + homepage = "https://pathofbuilding.community/"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.k900 ]; + mainProgram = "pobfrontend"; + broken = stdenv.isDarwin; # doesn't find uic6 for some reason + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a6e1542ed3e6..f1b16d2b623b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -36261,6 +36261,8 @@ with pkgs; papermc = callPackage ../games/papermc { }; + path-of-building = qt6Packages.callPackage ../games/path-of-building {}; + pentobi = libsForQt5.callPackage ../games/pentobi { }; performous = callPackage ../games/performous { };