┌─ NIX ──────────────────────────────────────────────────────────────────────┐
│ { │
│ fpp-config, │
│ userDir ? "/home/ooks/.config/project-plus", │
│ lib, │
│ stdenv, │
│ fetchFromGitHub, │
│ cmake, │
│ pkg-config, │
│ wrapQtAppsHook, │
│ fetchpatch, │
│ 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, │
│ 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-UmIaOBHMRsl9FnfowAQGBjB83wpVRhoO0gzLed09lmk"; │
│ inherit rev; │
│ }; │
│ │
│ patches = [ │
│ (fetchpatch │
│ { │
│ url = "https://github.com/dolphin-emu/dolphin/commit/3da2e15e6b95f02f66d │
│ f461e87c8b896e450fdab.patch"; │
│ hash = "sha256-+8yGF412wQUYbyEuYWd41pgOgEbhCaezexxcI5CNehc="; │
│ }) │
│ ]; │
│ │
│ 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 │
│ 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 │
│ xorg.libXxf86vm │
│ ]; │
│ │
│ 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" │
│ "--add-flags -u" │
│ "--add-flags ${toString userDir}" │
│ ]; │
│ │
│ 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${v │
│ ersion}|g' CMakeLists.txt # ensures compatibility w/ netplay │
│ sed -i 's|\$\\{GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD|echo HEAD|g' CMak │
│ eLists.txt │
│ sed -i 's|#include <optional>|#include <optional>\n#include <string>|g' Sour │
│ ce/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/Sys Binaries/ │
│ chmod -R 755 Binaries/ │
│ │
│ mkdir -p $out │
│ cp Binaries/ $out/ -r │
│ │
│ mkdir -p $out/bin │
│ ln -s $out/Binaries/ishiiruka $out/bin/faster-project-plus │
│ │
│ runHook postInstall │
│ ''; │
│ } │
└────────────────────────────────────────────────────────────────────────────────────┘
┌─ NIX ────────────────────────────────┐
│ { │
│ fpp-config, │
│ userDir ? "/home/ooks/.config/project-plus │
│ ", │
│ lib, │
│ stdenv, │
│ fetchFromGitHub, │
│ cmake, │
│ pkg-config, │
│ wrapQtAppsHook, │
│ fetchpatch, │
│ 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, │
│ miniupnpc, │
│ minizip-ng, │
│ openal, │
│ pugixml, │
│ qtbase, │
│ qtsvg, │
│ SDL2, │
│ sfml, │
│ udev, │
│ vulkan-loader, │
│ xorg, │
│ xxHash, │
│ xz, │
│ }: let │
│ rev = "f245e1ee105eeb5c18653657cd8b29415dc │
│ 37243"; │
│ version = "3.0.5"; │
│ in │
│ stdenv.mkDerivation { │
│ pname = "project-plus"; │
│ inherit version; │
│ │
│ src = fetchFromGitHub { │
│ owner = "jlambert360"; │
│ repo = "Ishiiruka"; │
│ hash = "sha256-UmIaOBHMRsl9FnfowAQGBjB │
│ 83wpVRhoO0gzLed09lmk"; │
│ inherit rev; │
│ }; │
│ │
│ patches = [ │
│ (fetchpatch │
│ { │
│ url = "https://github.com/dolphin- │
│ emu/dolphin/commit/3da2e15e6b95f02f66df461e8 │
│ 7c8b896e450fdab.patch"; │
│ hash = "sha256-+8yGF412wQUYbyEuYWd │
│ 41pgOgEbhCaezexxcI5CNehc="; │
│ }) │
│ ]; │
│ │
│ 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 │
│ 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 │
│ xorg.libXxf86vm │
│ ]; │
│ │
│ cmakeFlags = [ │
│ "-DLINUX_LOCAL_DEV=true" │
│ "-DGTK3_GLIBCONFIG_INCLUDE_DIR=${glib. │
│ out}/lib/glib-3.0/include" │
│ "-DGTK3_GDKCONFIG_INCLUDE_DIR=${gtk3.o │
│ ut}/lib/gtk-3.0/include" │
│ "-DGTK3_INCLUDE_DIRS=${gtk3.out}/lib/g │
│ tk-3.0" │
│ "-DENABLE_LTO=True" │
│ "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib. │
│ out}/lib/glib-2.0/include" │
│ "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.o │
│ ut}/lib/gtk-2.0/include" │
│ "-DGTK2_INCLUDE_DIRS=${gtk2}/lib/gtk-2 │
│ .0" │
│ ]; │
│ │
│ qtWrapperArgs = [ │
│ "--prefix LD_LIBRARY_PATH : ${lib.make │
│ LibraryPath [vulkan-loader]}" │
│ "--set QT_QPA_PLATFORM xcb" │
│ "--add-flags -u" │
│ "--add-flags ${toString userDir}" │
│ ]; │
│ │
│ patchPhase = '' │
│ sed -i 's|\$\\{GIT_EXECUTABLE} rev-par │
│ se HEAD|echo ${rev}|g' CMakeLists.txt # --se │
│ t scm_rev_str everywhere to actual commit ha │
│ sh when downloaded │
│ sed -i 's|\$\\{GIT_EXECUTABLE} describ │
│ e --always --long --dirty|echo FM v${version │
│ }|g' CMakeLists.txt # ensures compatibility │
│ w/ netplay │
│ sed -i 's|\$\\{GIT_EXECUTABLE} rev-par │
│ se --abbrev-ref HEAD|echo HEAD|g' CMakeLists │
│ .txt │
│ sed -i 's|#include <optional>|#include │
│ <optional>\n#include <string>|g' Source/Cor │
│ e/DiscIO/DiscExtractor.h │
│ cp Externals/wxWidgets3/include/wx Sou │
│ rce/Core/ -r │
│ cp Externals/wxWidgets3/wx/* Source/Co │
│ re/wx/ │
│ ''; │
│ │
│ installPhase = '' │
│ runHook preInstall │
│ │
│ cp -rf ${fpp-config}/Binaries/Sys Bina │
│ ries/ │
│ chmod -R 755 Binaries/ │
│ │
│ mkdir -p $out │
│ cp Binaries/ $out/ -r │
│ │
│ mkdir -p $out/bin │
│ ln -s $out/Binaries/ishiiruka $out/bin │
│ /faster-project-plus │
│ │
│ runHook postInstall │
│ ''; │
│ } │
└──────────────────────────────────────────────┘