Compare commits

..

No commits in common. "a42776ba2aa58167147da8604ee068e969e40fe2" and "b148d7e0599775a9729363da0880a6f4f925c557" have entirely different histories.

2 changed files with 94 additions and 106 deletions

12
flake.lock generated
View File

@ -28,11 +28,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746798521, "lastModified": 1746287478,
"narHash": "sha256-axfz/jBEH9XHpS7YSumstV7b2PrPf7L8bhWUtLBv3nA=", "narHash": "sha256-z3HiHR2CNAdwyZTWPM2kkzhE1gD1G6ExPxkaiQfNh7s=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e95a7c5b6fa93304cd2fd78cf676c4f6d23c422c", "rev": "75268f62525920c4936404a056f37b91e299c97e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -44,11 +44,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1746663147, "lastModified": 1746141548,
"narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -1,72 +1,71 @@
{ { stdenv
stdenv, , fetchurl
fetchurl, , lib
lib, , fetchFromGitHub
fetchFromGitHub, , cmake
cmake, , ninja
ninja, , jdk
jdk, , ghc_filesystem
ghc_filesystem, , zlib
zlib, , file
file, , wrapQtAppsHook
wrapQtAppsHook, , xorg
xorg, , libpulseaudio
libpulseaudio, , openal
openal, , qtbase
qtbase, , qtwayland
qtwayland, , qtsvg
qtsvg, , glfw
glfw3-minecraft, , pciutils
pciutils, , udev
udev, , glxinfo
glxinfo, , quazip
quazip, , libGL
libGL, , flite
flite, , addDriverRunpath
tomlplusplus, , vulkan-loader
addDriverRunpath, , msaClientID ? null
vulkan-loader, , extra-cmake-modules
msaClientID ? null, , qtcharts
extra-cmake-modules, , makeWrapper
qtcharts, , gamemode
makeWrapper, , mangohud
gamemode, , glfw-wayland-minecraft
mangohud, , writeShellScript
strictDrm ? false,
}: }:
let let
polymc = polymc =
let let
binpath = lib.makeBinPath [ binpath = lib.makeBinPath ([ xorg.xrandr glxinfo pciutils ]);
xorg.xrandr
glxinfo
pciutils
];
libpath =
with xorg;
lib.makeLibraryPath [
glfw3-minecraft
libX11
libXext
libXcursor
libXrandr
libXxf86vm
libGL libpath = with xorg; lib.makeLibraryPath ([
vulkan-loader libX11
libXext
libXcursor
libXrandr
libXxf86vm
libpulseaudio
libGL
vulkan-loader
glfw
openal
udev
flite
stdenv.cc.cc.lib
]);
openal
libpulseaudio
udev
flite
stdenv.cc.cc.lib
];
gameLibraryPath = libpath + ":${addDriverRunpath.driverLink}/lib"; gameLibraryPath = libpath + ":${addDriverRunpath.driverLink}/lib";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "polymc" + (lib.optionalString ((lib.versions.major qtbase.version) == "5") "-qt5"); pname = "polymc" + (lib.optionalString ((lib.versions.major qtbase.version) == "5") "-qt5");
version = "7.0"; version = "7.0";
patches = [ patches = [
# Fix for Qt >= 6.9.0 # Fix for Qt >= 6.9.0
(fetchurl { (fetchurl {
@ -74,24 +73,13 @@ let
hash = "sha256-ACrS7JAcLq46f8puQlfvPlRb6vk/+wuv+y1yqGQjp/I="; hash = "sha256-ACrS7JAcLq46f8puQlfvPlRb6vk/+wuv+y1yqGQjp/I=";
}) })
]; ];
libnbtplusplus = fetchFromGitHub {
owner = "PolyMC";
repo = "libnbtplusplus";
rev = "2203af7eeb48c45398139b583615134efd8d407f";
hash = "sha256-TvVOjkUobYJD9itQYueELJX3wmecvEdCbJ0FinW2mL4=";
};
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "PolyMC"; owner = "PolyMC";
repo = "PolyMC"; repo = "PolyMC";
rev = version; rev = version;
sha256 = "sha256-tJA/xSfqRXZK/OXbxhLNqUJU5nQGVzxgownXUMTy284="; sha256 = "sha256-tJA/xSfqRXZK/OXbxhLNqUJU5nQGVzxgownXUMTy284=";
fetchSubmodules = true;
}; };
postUnpack = ''
rm -rf source/libraries/libnbtplusplus
ln -s ${libnbtplusplus} source/libraries/libnbtplusplus
'';
dontWrapQtApps = true; dontWrapQtApps = true;
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
@ -108,23 +96,25 @@ let
qtcharts qtcharts
qtwayland qtwayland
quazip quazip
tomlplusplus
zlib zlib
]; ];
cmakeFlags = [ cmakeFlags = [
"-GNinja" "-GNinja"
(lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixerus") "-DLauncher_QT_VERSION_MAJOR=${lib.versions.major qtbase.version}"
(lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" (lib.versions.major qtbase.version)) ]
(lib.cmakeBool "Launcher_STRICT_DRM" strictDrm) ++ lib.optionals (msaClientID != null) [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
] ++ lib.optionals (msaClientID != null) [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
postPatch = '' postPatch = ''
# hardcode jdk paths
substituteInPlace launcher/java/JavaUtils.cpp \ substituteInPlace launcher/java/JavaUtils.cpp \
--replace 'scanJavaDir("/app/jdk");' 'scanJavaDir("/app/jdk"); javas.append("${jdk}/lib/openjdk/bin/java");' --replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${jdk}/lib/openjdk/bin/java")'
''; '';
postFixup = '' postFixup = ''
# xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
wrapQtApp $out/bin/polymc \ wrapQtApp $out/bin/polymc \
--suffix LD_LIBRARY_PATH : "${gameLibraryPath}" \ --suffix LD_LIBRARY_PATH : "${gameLibraryPath}" \
--suffix PATH : "${binpath}" \ --suffix PATH : "${binpath}" \
@ -132,43 +122,41 @@ let
''; '';
passthru = { passthru = {
wrap = wrap =
{ { extraJDKs ? [ ]
extraJDKs ? [ ], , extraPaths ? [ ]
extraPaths ? [ ], , extraLibs ? [ ]
extraLibs ? [ ], , withWaylandGLFW ? false
withMangohud ? true, , withMangohud ? true
withGamemode ? true, , withGamemode ? true
}: }: stdenv.mkDerivation rec {
stdenv.mkDerivation rec {
pname = "${polymc.pname}-wrapped"; pname = "${polymc.pname}-wrapped";
version = polymc.version; version = polymc.version;
libsPath = libsPath = (lib.makeLibraryPath (extraLibs ++ lib.optional withGamemode gamemode.lib)) + lib.optionalString withMangohud "${mangohud + "/lib/mangohud"}";
(lib.makeLibraryPath (extraLibs ++ lib.optional withGamemode gamemode.lib))
+ lib.optionalString withMangohud ":${mangohud + "/lib/mangohud"}";
binsPath = lib.makeBinPath (extraPaths ++ lib.optional withMangohud mangohud); binsPath = lib.makeBinPath (extraPaths ++ lib.optional withMangohud mangohud);
waylandPreExec = writeShellScript "waylandGLFW" ''
if [ -n "$WAYLAND_DISPLAY" ]; then
export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH"
fi
'';
src = polymc; src = polymc;
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
phases = [ phases = [ "installPhase" "fixupPhase" ];
"installPhase"
"fixupPhase"
];
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
ln -s $src/bin/polymc $out/bin/polymc ln -s $src/bin/polymc $out/bin/polymc
ln -s $src/share $out/share ln -s $src/share $out/share
''; '';
postFixup = postFixup = let javaPaths = lib.makeSearchPath "bin/java" (extraJDKs); in
let
javaPaths = lib.makeSearchPath "bin/java" extraJDKs;
in
'' ''
wrapProgram $out/bin/polymc \ wrapProgram $out/bin/polymc \
--prefix LD_LIBRARY_PATH : "${libsPath}" \ --suffix LD_LIBRARY_PATH : "${libsPath}" \
--prefix POLYMC_JAVA_PATHS : "${javaPaths}" \ --suffix POLYMC_JAVA_PATHS : "${javaPaths}" \
--prefix PATH : "${binsPath}" --suffix PATH : "${binsPath}" ${lib.optionalString withWaylandGLFW ''--run ${waylandPreExec}''}
''; '';
preferLocalBuild = true; preferLocalBuild = true;