From b1b162a829f42c274d09031a93fd34ad4bacd5eb Mon Sep 17 00:00:00 2001 From: Dmitriy Kholkin Date: Wed, 15 Sep 2021 15:33:45 +0300 Subject: [PATCH] update multimc --- flake.nix | 12 ++++++--- modules/overlay.nix | 11 +-------- modules/packages/multimc.nix | 48 ++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 modules/packages/multimc.nix diff --git a/flake.nix b/flake.nix index 21f343b..611f97c 100644 --- a/flake.nix +++ b/flake.nix @@ -45,10 +45,14 @@ url = gitlab:rycee/nur-expressions; flake = false; }; - # multimc-cracked = { - # url = github:AfoninZ/MultiMC5-Cracked; - # flake = false; - # }; + multimc-cracked = { + url = "https://github.com/AfoninZ/MultiMC5-Cracked.git"; + ref = "develop"; + rev = "9069e9c9d0b7951c310fdcc8bdc70ebc422a7634"; + flake = false; + submodules = true; + type = "git"; + }; qbittorrent-ee = { url = github:c0re100/qBittorrent-Enhanced-Edition; flake = false; diff --git a/modules/overlay.nix b/modules/overlay.nix index fe63c87..82710a2 100644 --- a/modules/overlay.nix +++ b/modules/overlay.nix @@ -31,16 +31,7 @@ in vscode = master.vscode; vscode-fhs = master.vscode-fhs; vivaldi = master.vivaldi; - multimc = super.multimc.overrideAttrs (stable: rec { - version = "unstable-cracked"; - src = super.fetchFromGitHub { - owner = "AfoninZ"; - repo = "MultiMC5-Cracked"; - rev = "6d6218a21ba54e77c4fc76b3ae8cddf3334f1a5d"; - sha256 = "0k59pnqdlzqp75c1lbpqy2i09mmy5qisikalm427i16b07ga9xcl"; - fetchSubmodules = true; - }; - }); + multimc = pkgs.qt5.callPackage ./packages/multimc.nix { multimc-repo = inputs.multimc-cracked; }; steam = super.steam.override { extraLibraries = pkgs: with pkgs; [ pipewire diff --git a/modules/packages/multimc.nix b/modules/packages/multimc.nix new file mode 100644 index 0000000..f11d37a --- /dev/null +++ b/modules/packages/multimc.nix @@ -0,0 +1,48 @@ +{ multimc-repo, lib, pkgs, mkDerivation }: + +let + libpath = with pkgs; lib.makeLibraryPath [ xorg.libX11 xorg.libXext xorg.libXcursor xorg.libXrandr xorg.libXxf86vm libpulseaudio libGL ]; +in mkDerivation rec { + pname = "multimc"; + version = "unstable"; + src = multimc-repo; + nativeBuildInputs = with pkgs; [ cmake file makeWrapper ]; + buildInputs = with pkgs; [ libsForQt5.qt5.qtbase jdk8 jdk zlib ]; + + # patches = [ ./0001-pick-latest-java-first.patch ]; + + postPatch = '' + # hardcode jdk paths + substituteInPlace api/logic/java/JavaUtils.cpp \ + --replace 'scanJavaDir("/usr/lib/jvm")' 'javas.append("${pkgs.jdk}/lib/openjdk/bin/java")' \ + --replace 'scanJavaDir("/usr/lib32/jvm")' 'javas.append("${pkgs.jdk8}/lib/openjdk/bin/java")' + ''; + + cmakeFlags = [ "-DMultiMC_LAYOUT=lin-system" ]; + + postInstall = '' + ls -lah ./ + ls -lah ../ + install -Dm644 ../application/resources/multimc/scalable/multimc.svg $out/share/pixmaps/multimc.svg + install -Dm755 ../application/package/linux/multimc.desktop $out/share/applications/multimc.desktop + + # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + wrapProgram $out/bin/multimc \ + --set GAME_LIBRARY_PATH /run/opengl-driver/lib:${libpath} \ + --prefix PATH : ${lib.makeBinPath [ pkgs.xorg.xrandr ]} + ''; + + meta = with lib; { + homepage = "https://multimc.org/"; + description = "A free, open source launcher for Minecraft"; + longDescription = '' + Allows you to have multiple, separate instances of Minecraft (each with their own mods, texture packs, saves, etc) and helps you manage them and their associated options with a simple interface. + ''; + platforms = platforms.linux; + license = licenses.asl20; + # upstream don't want us to re-distribute this application: + # https://github.com/NixOS/nixpkgs/issues/131983 + hydraPlatforms = []; + maintainers = with maintainers; [ cleverca22 starcraft66 ]; + }; +} \ No newline at end of file