diff --git a/outputs/pkgs/default.nix b/outputs/pkgs/default.nix index 6624778..4710db9 100644 --- a/outputs/pkgs/default.nix +++ b/outputs/pkgs/default.nix @@ -1,6 +1,7 @@ { inputs, lib, + hozen, ... }: { perSystem = {pkgs, ...}: let @@ -12,8 +13,18 @@ website = callPackage ./website {}; caddy-with-cloudflare = callPackage ./caddy-with-cloudflare {}; - #ook-vim = mkNeovim pkgs [ook-vim-config]; - ook-vim = callPackage ./ook-vim {inherit inputs pkgs lib;}; + wii-u-gc-adapter = callPackage ./wii-u-gc-adapter {}; + + ook-vim = callPackage ./ook-vim {inherit inputs pkgs lib hozen;}; + + project-plus = let + fpp-config = callPackage ./project-plus/fpp-config.nix {}; + fpp-launcher = callPackage ./project-plus/fpp-launcher.nix {}; + fpp-sd = callPackage ./project-plus/fpp-sd.nix {}; + in + callPackage ./project-plus { + inherit fpp-config fpp-launcher fpp-sd; + }; }; }; } diff --git a/outputs/pkgs/project-plus/default.nix b/outputs/pkgs/project-plus/default.nix new file mode 100644 index 0000000..098eb9f --- /dev/null +++ b/outputs/pkgs/project-plus/default.nix @@ -0,0 +1,187 @@ +{ + fpp-config, + fpp-sd, + fpp-launcher, + lib, + stdenv, + fetchFromGitHub, + cmake, + pkg-config, + wrapQtAppsHook, + fetchpatch, + makeDesktopItem, + copyDesktopItems, + alsa-lib, + bluez, + bzip2, + cubeb, + curl, + ffmpeg, + fmt_10, + glib, + gtk2, + gtk3, + gtest, + hidapi, + enet, + libevdev, + libGL, + libiconv, + libpulseaudio, + libspng, + libusb1, + libXdmcp, + libXext, + libXi, + libXrandr, + lz4, + lzo, + mbedtls_2, + miniupnpc, + minizip-ng, + openal, + pugixml, + qtbase, + qtsvg, + SDL2, + sfml, + udev, + vulkan-loader, + xorg, + xxHash, + xz, +}: let + rev = "f245e1ee105eeb5c18653657cd8b29415dc37243"; + version = "3.0.5"; +in + stdenv.mkDerivation { + pname = "project-plus"; + inherit version; + + src = fetchFromGitHub { + owner = "jlambert360"; + repo = "Ishiiruka"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + inherit rev; + }; + + patches = [ + fetchpatch + { + url = "https://github.com/dolphin-emu/dolphin/commit/3da2e15e6b95f02f66df461e87c8b896e450fdab.patch"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + } + ]; + + strictDeps = true; + + nativeBuildInputs = [ + cmake + pkg-config + wrapQtAppsHook + copyDesktopItems + ]; + buildInputs = [ + bzip2 + cubeb + curl + enet + ffmpeg + fmt_10 + gtest + hidapi + libiconv + libpulseaudio + libspng + libXdmcp + libXi + lz4 + lzo + libusb1 + mbedtls_2 + miniupnpc + minizip-ng + openal + pugixml + qtbase + qtsvg + SDL2 + sfml + xxHash + xz + alsa-lib + bluez + libevdev + libGL + libXrandr + udev + vulkan-loader + libXext + glib + gtk2 + gtk3 + xorg.libXinerama + ]; + + cmakeFlags = [ + "-DLINUX_LOCAL_DEV=true" + "-DGTK3_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-3.0/include" + "-DGTK3_GDKCONFIG_INCLUDE_DIR=${gtk3.out}/lib/gtk-3.0/include" + "-DGTK3_INCLUDE_DIRS=${gtk3.out}/lib/gtk-3.0" + "-DENABLE_LTO=True" + "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include" + "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" + "-DGTK2_INCLUDE_DIRS=${gtk2}/lib/gtk-2.0" + ]; + + qtWrapperArgs = [ + "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [vulkan-loader]}" + "--set QT_QPA_PLATFORM xcb" + ]; + + patchPhase = '' + sed -i 's|\$\\{GIT_EXECUTABLE} rev-parse HEAD|echo ${rev}|g' CMakeLists.txt # --set scm_rev_str everywhere to actual commit hash when downloaded + sed -i 's|\$\\{GIT_EXECUTABLE} describe --always --long --dirty|echo FM v${version}|g' CMakeLists.txt # ensures compatibility w/ netplay + sed -i 's|\$\\{GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD|echo HEAD|g' CMakeLists.txt + sed -i 's|#include |#include \n#include |g' Source/Core/DiscIO/DiscExtractor.h + cp Externals/wxWidgets3/include/wx Source/Core/ -r + cp Externals/wxWidgets3/wx/* Source/Core/wx/ + ''; + + installPhase = '' + runHook preInstall + + cp -rf ${fpp-config}/Binaries/* Binaries/ + chmod -R 755 Binaries/ + rm Binaries/portable.txt + + cp -rf ${fpp-launcher}/Launcher/* Binaries/Launcher + mkdir -p Binaries/User/Wii + install -D -m 755 ${fpp-sd}/sd.raw Binaries/User/Wii + mkdir -p $out + cp Binaries/ $out/ -r + + sed -i 's|ISOPaths = 2|ISOPaths = 1|g' $out/Binaries/User/Config/Dolphin.ini + sed -i 's|WiiSDCardPath = ./User/Wii/sd.raw|WiiSDCardPath = '$out'/User/Wii/sd.raw|g' $out/Binaries/User/Config/Dolphin.ini + sed -i 's|ISOPath0 = ./Launcher|ISOPath0 = '$out'/Launcher|g' $out/Binaries/User/Config/Dolphin.ini + sed -i '\|ISOPath1 = ./Games|d' $out/Binaries/User/Config/Dolphin.ini + + mkdir -p $out/bin + ln -s $out/Binaries/ishiiruka $out/bin/faster-project-plus + + runHook postInstall + ''; + + desktopItems = [ + (makeDesktopItem { + name = "project-plus"; + exec = "project-plus"; + icon = "ishiiruka"; + desktopName = "Project+"; + comment = "Ishiiruka fork for SSBPM"; + type = "Application"; + categories = ["Emulator" "Game"]; + keywords = ["ProjectM" "Project M" "ProjectPlus" "Project Plus" "Project+"]; + }) + ]; + } diff --git a/outputs/pkgs/project-plus/fpp-launcher.nix b/outputs/pkgs/project-plus/fpp-launcher.nix new file mode 100644 index 0000000..f291658 --- /dev/null +++ b/outputs/pkgs/project-plus/fpp-launcher.nix @@ -0,0 +1,20 @@ +{ + stdenv, + fetchzip, +}: let + version = "3.0.5"; +in + stdenv.mkDerivation { + inherit version; + name = "fpp-launcher"; + + src = fetchzip { + url = "https://github.com/jlambert360/FPM-AppImage/releases/download/v${version}/Launcher.tar.gz"; + sha256 = "sha256-Q3F4V/ggePaZRsGFM54hkGBkLb52PaIn2lQ31gYANW0="; + }; + + installPhase = '' + mkdir -p $out/Launcher + cp -rf . $out/Launcher + ''; + }