From 230ac000af9de06b42edd4f960a7a69fa5416798 Mon Sep 17 00:00:00 2001 From: Jakub Trzeciak Date: Thu, 9 Nov 2023 20:18:03 +0100 Subject: Modrinth App --- flake.nix | 2 +- home-manager/home.nix | 11 +++++-- nixos/configuration.nix | 3 ++ pkgs/default.nix | 8 +++-- pkgs/modrinth-app/default.nix | 54 +++++++++++++++++++++++--------- pkgs/modrinth-app/wrapper.nix | 73 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 130 insertions(+), 21 deletions(-) create mode 100644 pkgs/modrinth-app/wrapper.nix diff --git a/flake.nix b/flake.nix index 18babe5..97b78f0 100644 --- a/flake.nix +++ b/flake.nix @@ -59,7 +59,7 @@ home-manager.users.${username} = { imports = [ ./home-manager/home.nix ]; }; - home-manager.extraSpecialArgs = { inherit username nix-colors; }; + home-manager.extraSpecialArgs = { inherit username nix-colors inputs; }; } ]; }; diff --git a/home-manager/home.nix b/home-manager/home.nix index d185fa3..f57bd22 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -1,4 +1,4 @@ -{ username, nix-colors, config, pkgs, lib, ... }: +{ inputs, username, nix-colors, config, pkgs, lib, ... }: let nvim-spell-pl-utf8-dict = builtins.fetchurl { url = "http://ftp.vim.org/vim/runtime/spell/pl.utf-8.spl"; @@ -13,6 +13,11 @@ let schemeFromYaml = import ./schemeFromYAML.nix; in { + nix.settings = { + trusted-substituters = ["https://cache.garnix.io"]; + trusted-public-keys = ["cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="]; + }; + imports = [ nix-colors.homeManagerModules.default ./addons/firefox.nix @@ -48,10 +53,10 @@ in { (import ./sh/mpv.nix {inherit pkgs; }) (import ./sh/fuzzel.nix {inherit pkgs; }) - ### Games ### - modrinth-app + modrinth-app ]; + nixpkgs.config.packageOverrides = pkgs: { nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") { inherit pkgs; diff --git a/nixos/configuration.nix b/nixos/configuration.nix index ae89d00..fba549e 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -8,6 +8,9 @@ ]; config = { + permittedInsecurePackages = [ + "openssl-1.1.1w" + ]; allowUnfree = true; pulseaduio = true; packageOverrides = 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