From 230ac000af9de06b42edd4f960a7a69fa5416798 Mon Sep 17 00:00:00 2001 From: Jakub Trzeciak Date: Thu, 9 Nov 2023 20:18:03 +0100 Subject: Modrinth App --- pkgs/default.nix | 8 +++-- pkgs/modrinth-app/default.nix | 54 +++++++++++++++++++++++--------- pkgs/modrinth-app/wrapper.nix | 73 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 118 insertions(+), 17 deletions(-) create mode 100644 pkgs/modrinth-app/wrapper.nix (limited to 'pkgs') diff --git a/pkgs/default.nix b/pkgs/default.nix index 02e5fdb..c29ed89 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,9 +1,13 @@ # Custom packages, that can be defined similarly to ones from nixpkgs # You can build them using 'nix build .#example' or (legacy) 'nix-build -A example' -{ pkgs ? (import ../nixpkgs.nix) { } }: { +{ pkgs ? (import ../nixpkgs.nix) { } }: let + modrinth-app-unwrapped = pkgs.callPackage ./modrinth-app { }; +in { mercury-browser = pkgs.callPackage ./mercury-browser { }; dmenu-bluetooth = pkgs.callPackage ./dmenu-bluetooth { }; neo-comic-mono-font = pkgs.callPackage ./neo-comic-mono-font { }; - modrinth-app = pkgs.callPackage ./modrinth-app { }; + modrinth-app = pkgs.callPackage ./modrinth-app/wrapper.nix { + inherit modrinth-app-unwrapped; + }; } diff --git a/pkgs/modrinth-app/default.nix b/pkgs/modrinth-app/default.nix index 3ea1d6e..1d18654 100644 --- a/pkgs/modrinth-app/default.nix +++ b/pkgs/modrinth-app/default.nix @@ -1,32 +1,56 @@ -{ stdenv, lib, appimage-run, fetchurl, writeShellScriptBin, libthai }: - -stdenv.mkDerivation rec { +{ + autoPatchelfHook, + dpkg, + fetchurl, + glib, + gtk3, + lib, + libsoup, + libthai, + openssl_1_1, + stdenv, + webkitgtk, +}: stdenv.mkDerivation rec { pname = "modrinth-app"; version = "0.6.0"; + srcs = []; + src = fetchurl { + url = "https://launcher-files.modrinth.com/versions/${version}/linux/${pname}_${version}_amd64.deb"; + sha256 = "sha256-usaXxLp8IendOaiGFAXdEDnjW3lyyp0SSCGR1IG82m8="; + }; + buildInputs = [ + autoPatchelfHook + dpkg + glib + gtk3 + libsoup libthai + openssl_1_1 + webkitgtk ]; unpackPhase = "true"; - srcs = []; + installPhase = '' + runHook preInstall + + mkdir -p $out + dpkg -x $src $out + + mv $out/usr/* $out + rm -rf $out/usr + + chmod +x $out/bin/${pname} - postInstall = let - src = fetchurl { - url = "https://launcher-files.modrinth.com/versions/${version}/linux/${pname}_${version}_amd64.AppImage"; - sha256 = "sha256-7BIoKqFXe9gqSfQXk8BUEQT5Fx7S8tXZ9cBl+WBjMGc="; - }; - in '' - mkdir -p $out/bin - echo "${appimage-run}/bin/appimage-run ${src}" > $out/bin/modrinth-app - chmod +x $out/bin/modrinth-app + runHook postInstall ''; meta = with lib; { description = "Modrinth minecraft launcher"; homepage = "https://modrinth.com/app"; - #license = licenses.gpl3Only; - #maintainers = with maintainers; [ elnudev ]; + license = licenses.gpl3Only; + maintainers = with maintainers; [ jptrzy ]; platforms = [ "x86_64-linux" ]; sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; }; diff --git a/pkgs/modrinth-app/wrapper.nix b/pkgs/modrinth-app/wrapper.nix new file mode 100644 index 0000000..bfb2823 --- /dev/null +++ b/pkgs/modrinth-app/wrapper.nix @@ -0,0 +1,73 @@ +{ + addOpenGLRunpath, + copyDesktopItems, + flite, + glib-networking, + jdk17, + jdk8, + jdks ? [jdk8 jdk17], + lib, + libGL, + libpulseaudio, + modrinth-app-unwrapped, + stdenv, + symlinkJoin, + udev, + wrapGAppsHook, + xorg, +}: +symlinkJoin { + name = "modrinth-app-${modrinth-app-unwrapped.version}"; + + paths = [modrinth-app-unwrapped]; + + buildInputs = [ + glib-networking + copyDesktopItems + ]; + + nativeBuildInputs = [ + wrapGAppsHook + ]; + + postBuild = let + libPath = lib.makeLibraryPath [ + flite # narrator support + libGL + libpulseaudio + stdenv.cc.cc.lib + + udev # oshi + + # lwjgl + xorg.libX11 + xorg.libXcursor + xorg.libXext + xorg.libXxf86vm + xorg.libXrandr + ]; + + binPath = lib.makeBinPath ( + lib.optionals stdenv.isLinux [xorg.xrandr] + ); + + args = + ["--prefix PATH : ${lib.makeSearchPath "bin/java" jdks}"] + ++ lib.optionals stdenv.isLinux [ + "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${libPath}" + "--prefix PATH : ${binPath}" + ]; + in '' + gappsWrapperArgs+=( + ${lib.concatStringsSep "\n" args} + ) + + wrapGAppsHook + ''; + + postInstall = '' + copyDesktopItems + ''; + + inherit (modrinth-app-unwrapped) meta; +} -- cgit v1.2.3