mirror of
				https://github.com/materusPL/Nixerus.git
				synced 2025-11-03 22:20:27 +01:00 
			
		
		
		
	polymc: Formatting, fix gamemode/mangohud, use tomlplusplus from nixpkgs
This commit is contained in:
		
							parent
							
								
									b148d7e059
								
							
						
					
					
						commit
						a168213719
					
				@ -1,71 +1,72 @@
 | 
				
			|||||||
{ stdenv
 | 
					{
 | 
				
			||||||
, fetchurl
 | 
					  stdenv,
 | 
				
			||||||
, lib
 | 
					  fetchurl,
 | 
				
			||||||
, fetchFromGitHub
 | 
					  lib,
 | 
				
			||||||
, cmake
 | 
					  fetchFromGitHub,
 | 
				
			||||||
, ninja
 | 
					  cmake,
 | 
				
			||||||
, jdk
 | 
					  ninja,
 | 
				
			||||||
, ghc_filesystem
 | 
					  jdk,
 | 
				
			||||||
, zlib
 | 
					  ghc_filesystem,
 | 
				
			||||||
, file
 | 
					  zlib,
 | 
				
			||||||
, wrapQtAppsHook
 | 
					  file,
 | 
				
			||||||
, xorg
 | 
					  wrapQtAppsHook,
 | 
				
			||||||
, libpulseaudio
 | 
					  xorg,
 | 
				
			||||||
, openal
 | 
					  libpulseaudio,
 | 
				
			||||||
, qtbase
 | 
					  openal,
 | 
				
			||||||
, qtwayland
 | 
					  qtbase,
 | 
				
			||||||
, qtsvg
 | 
					  qtwayland,
 | 
				
			||||||
, glfw
 | 
					  qtsvg,
 | 
				
			||||||
, pciutils
 | 
					  glfw3-minecraft,
 | 
				
			||||||
, udev
 | 
					  pciutils,
 | 
				
			||||||
, glxinfo
 | 
					  udev,
 | 
				
			||||||
, quazip
 | 
					  glxinfo,
 | 
				
			||||||
, libGL
 | 
					  quazip,
 | 
				
			||||||
, flite
 | 
					  libGL,
 | 
				
			||||||
, addDriverRunpath
 | 
					  flite,
 | 
				
			||||||
, vulkan-loader
 | 
					  tomlplusplus,
 | 
				
			||||||
, msaClientID ? null
 | 
					  addDriverRunpath,
 | 
				
			||||||
, extra-cmake-modules
 | 
					  vulkan-loader,
 | 
				
			||||||
, qtcharts
 | 
					  msaClientID ? null,
 | 
				
			||||||
, makeWrapper
 | 
					  extra-cmake-modules,
 | 
				
			||||||
, gamemode
 | 
					  qtcharts,
 | 
				
			||||||
, mangohud
 | 
					  makeWrapper,
 | 
				
			||||||
, glfw-wayland-minecraft
 | 
					  gamemode,
 | 
				
			||||||
, writeShellScript
 | 
					  mangohud,
 | 
				
			||||||
 | 
					  strictDrm ? false,
 | 
				
			||||||
}:
 | 
					}:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
let
 | 
					let
 | 
				
			||||||
  polymc =
 | 
					  polymc =
 | 
				
			||||||
    let
 | 
					    let
 | 
				
			||||||
      binpath = lib.makeBinPath ([ xorg.xrandr glxinfo pciutils ]);
 | 
					      binpath = lib.makeBinPath [
 | 
				
			||||||
 | 
					        xorg.xrandr
 | 
				
			||||||
 | 
					        glxinfo
 | 
				
			||||||
 | 
					        pciutils
 | 
				
			||||||
 | 
					      ];
 | 
				
			||||||
 | 
					      libpath =
 | 
				
			||||||
 | 
					        with xorg;
 | 
				
			||||||
 | 
					        lib.makeLibraryPath [
 | 
				
			||||||
 | 
					          glfw3-minecraft
 | 
				
			||||||
 | 
					          libX11
 | 
				
			||||||
 | 
					          libXext
 | 
				
			||||||
 | 
					          libXcursor
 | 
				
			||||||
 | 
					          libXrandr
 | 
				
			||||||
 | 
					          libXxf86vm
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
      libpath = with xorg; lib.makeLibraryPath ([
 | 
					          libGL
 | 
				
			||||||
        libX11
 | 
					          vulkan-loader
 | 
				
			||||||
        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 {
 | 
				
			||||||
@ -73,13 +74,24 @@ 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
 | 
				
			||||||
@ -96,25 +108,23 @@ let
 | 
				
			|||||||
        qtcharts
 | 
					        qtcharts
 | 
				
			||||||
        qtwayland
 | 
					        qtwayland
 | 
				
			||||||
        quazip
 | 
					        quazip
 | 
				
			||||||
 | 
					        tomlplusplus
 | 
				
			||||||
        zlib
 | 
					        zlib
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
      cmakeFlags = [
 | 
					      cmakeFlags = [
 | 
				
			||||||
        "-GNinja"
 | 
					        "-GNinja"
 | 
				
			||||||
        "-DLauncher_QT_VERSION_MAJOR=${lib.versions.major qtbase.version}"
 | 
					        (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixerus")
 | 
				
			||||||
      ]
 | 
					        (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" (lib.versions.major qtbase.version))
 | 
				
			||||||
      ++ lib.optionals (msaClientID != null) [ "-DLauncher_MSA_CLIENT_ID=${msaClientID}" ];
 | 
					        (lib.cmakeBool "Launcher_STRICT_DRM" strictDrm)
 | 
				
			||||||
 | 
					      ] ++ 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("/usr/lib/jvm")' 'javas.append("${jdk}/lib/openjdk/bin/java")' 
 | 
					          --replace 'scanJavaDir("/app/jdk");' 'scanJavaDir("/app/jdk"); 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}" \
 | 
				
			||||||
@ -122,41 +132,43 @@ let
 | 
				
			|||||||
      '';
 | 
					      '';
 | 
				
			||||||
      passthru = {
 | 
					      passthru = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        wrap =
 | 
					        wrap =
 | 
				
			||||||
          { extraJDKs ? [ ]
 | 
					          {
 | 
				
			||||||
          , extraPaths ? [ ]
 | 
					            extraJDKs ? [ ],
 | 
				
			||||||
          , extraLibs ? [ ]
 | 
					            extraPaths ? [ ],
 | 
				
			||||||
          , withWaylandGLFW ? false
 | 
					            extraLibs ? [ ],
 | 
				
			||||||
          , 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 = (lib.makeLibraryPath (extraLibs ++ lib.optional withGamemode gamemode.lib)) + lib.optionalString withMangohud "${mangohud + "/lib/mangohud"}";
 | 
					            libsPath =
 | 
				
			||||||
 | 
					              (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 = [ "installPhase" "fixupPhase" ];
 | 
					            phases = [
 | 
				
			||||||
 | 
					              "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 = let javaPaths = lib.makeSearchPath "bin/java" (extraJDKs); in
 | 
					            postFixup =
 | 
				
			||||||
 | 
					              let
 | 
				
			||||||
 | 
					                javaPaths = lib.makeSearchPath "bin/java" extraJDKs;
 | 
				
			||||||
 | 
					              in
 | 
				
			||||||
              ''
 | 
					              ''
 | 
				
			||||||
                wrapProgram $out/bin/polymc \
 | 
					                wrapProgram $out/bin/polymc \
 | 
				
			||||||
                  --suffix LD_LIBRARY_PATH : "${libsPath}" \
 | 
					                  --prefix LD_LIBRARY_PATH : "${libsPath}" \
 | 
				
			||||||
                  --suffix POLYMC_JAVA_PATHS : "${javaPaths}" \
 | 
					                  --prefix POLYMC_JAVA_PATHS : "${javaPaths}" \
 | 
				
			||||||
                  --suffix PATH : "${binsPath}" ${lib.optionalString withWaylandGLFW ''--run ${waylandPreExec}''}
 | 
					                  --prefix PATH : "${binsPath}"
 | 
				
			||||||
                  
 | 
					 | 
				
			||||||
              '';
 | 
					              '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            preferLocalBuild = true;
 | 
					            preferLocalBuild = true;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user