diff --git a/shell.nix b/shell.nix index b58773059..66d61169e 100644 --- a/shell.nix +++ b/shell.nix @@ -1,149 +1,67 @@ -### Vulkan packages in official nix repo are still using version 1.3.296.0 while 1.4.305 or 1.4.304.0 is required for this package, so we have to use a custom vulkan packages to build shadPS4. +with import (fetchTarball "https://github.com/nixos/nixpkgs/archive/cfd19cdc54680956dc1816ac577abba6b58b901c.tar.gz") { }; -with import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec.tar.gz") { }; - -let - vulkanLoaderCustom = pkgs.stdenv.mkDerivation rec { - pname = "vulkan-loader"; - version = "1.4.305"; - - src = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "Vulkan-Loader"; - rev = "v${version}"; - hash = "sha256-nAxb2WH4FUNyZ0daO1lEcuuIbqLTjNDsc95m3NIY8F8="; - }; - - nativeBuildInputs = [ cmake pkg-config ]; - buildInputs = [ vulkanHeadersCustom ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ xorg.libX11 xorg.libxcb xorg.libXrandr wayland ]; - - cmakeFlags = [ "-DCMAKE_INSTALL_INCLUDEDIR=${vulkanHeadersCustom}/include" ] - ++ lib.optional stdenv.hostPlatform.isDarwin "-DSYSCONFDIR=${moltenvk}/share" - ++ lib.optional stdenv.hostPlatform.isLinux "-DSYSCONFDIR=${addDriverRunpath.driverLink}/share" - ++ lib.optional (stdenv.buildPlatform != stdenv.hostPlatform) "-DUSE_GAS=OFF"; - - outputs = [ "out" "dev" ]; - - doInstallCheck = true; - - installCheckPhase = '' - vulkan_path="${vulkanHeadersCustom}/include" - stripped_path="''${vulkan_path#/nix/store/}" - grep -q "$stripped_path" $dev/lib/pkgconfig/vulkan.pc || { - echo vulkanHeadersCustom include directory not found in pkg-config file - exit 1 - } - ''; - - passthru = { - tests.pkg-config = testers.hasPkgConfigModules { - package = finalAttrs.finalPackage; - }; - }; - }; - - vulkanUtilsCustom = pkgs.stdenv.mkDerivation rec { - pname = "vulkan-utility-libraries"; - version = "1.4.305"; - - src = fetchFromGitHub { - owner = "KhronosGroup"; - repo = "Vulkan-Utility-Libraries"; - rev = "vulkan-sdk-${version}"; - hash = "sha256-YBket/4gsAkkr1eTQXz8lXGyQHtY5mm8jLPKAqSaawM="; - }; - - nativeBuildInputs = [ - cmake - python3 - ]; - buildInputs = [ vulkanHeadersCustom ]; - }; - vulkanHeadersCustom = pkgs.stdenv.mkDerivation rec { - pname = "vulkan-headers"; - version = "1.4.305"; - src = pkgs.fetchFromGitHub { - owner = "KhronosGroup"; - repo = "Vulkan-Headers"; - rev = "v${version}"; - hash = "sha256-r5tgUxu+ZGzxBGAfLxX1bW4YshRdqCwxVQJsoQrtY/Y="; - }; - - cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [ "-DVULKAN_HEADERS_ENABLE_MODULE=OFF" ]; - - nativeBuildInputs = [ - pkgs.cmake - pkgs.ninja - ]; - }; - - llvmPackages = pkgs.llvmPackages_18; - - overlay = self: super: { - vulkan-headers = vulkanHeadersCustom; - vulkan-utility-libraries = vulkanUtilsCustom; - vulkan-loader = vulkanLoaderCustom; - }; -in - -with import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/606996d74f6e2a12635d41c1bf58bfc7ea3bb5ec.tar.gz") { overlays = [ overlay ]; }; - -llvmPackages.stdenv.mkDerivation { +pkgs.mkShell { name = "shadps4-build-env"; + nativeBuildInputs = [ - clang - cmake - pkg-config - git + pkgs.llvmPackages_18.clang + pkgs.cmake + pkgs.pkg-config + pkgs.git ]; + buildInputs = [ - alsa-lib - libpulseaudio - openal - openssl - zlib - libedit - udev - libevdev - SDL2 - jack2 - sndio - qt6.qtbase - qt6.qttools - qt6.qtmultimedia - vulkanHeadersCustom - vulkanUtilsCustom - ffmpeg - fmt - glslang - libxkbcommon - wayland - xorg.libxcb - xorg.xcbutil - xorg.xcbutilkeysyms - xorg.xcbutilwm - sdl3 - stb - qt6.qtwayland - wayland - wayland-protocols - libxkbcommon + pkgs.alsa-lib + pkgs.libpulseaudio + pkgs.openal + pkgs.openssl + pkgs.zlib + pkgs.libedit + pkgs.udev + pkgs.libevdev + pkgs.SDL2 + pkgs.jack2 + pkgs.sndio + pkgs.qt6.qtbase + pkgs.qt6.qttools + pkgs.qt6.qtmultimedia + + pkgs.vulkan-headers + pkgs.vulkan-utility-libraries + pkgs.vulkan-tools + + pkgs.ffmpeg + pkgs.fmt + pkgs.glslang + pkgs.libxkbcommon + pkgs.wayland + pkgs.xorg.libxcb + pkgs.xorg.xcbutil + pkgs.xorg.xcbutilkeysyms + pkgs.xorg.xcbutilwm + pkgs.sdl3 + pkgs.stb + pkgs.qt6.qtwayland + pkgs.wayland-protocols ]; + shellHook = '' + echo "Entering shadPS4 dev shell" export QT_QPA_PLATFORM="wayland" - export QT_PLUGIN_PATH="${qt6.qtwayland}/lib/qt-6/plugins:${qt6.qtbase}/lib/qt-6/plugins" - export QML2_IMPORT_PATH="${qt6.qtbase}/lib/qt-6/qml" - export CMAKE_PREFIX_PATH="${vulkanHeadersCustom}:$CMAKE_PREFIX_PATH" + export QT_PLUGIN_PATH="${pkgs.qt6.qtwayland}/lib/qt-6/plugins:${pkgs.qt6.qtbase}/lib/qt-6/plugins" + export QML2_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml" + export CMAKE_PREFIX_PATH="${pkgs.vulkan-headers}:$CMAKE_PREFIX_PATH" - # NVIDIA/OpenGL - export LD_LIBRARY_PATH="${lib.makeLibraryPath [ libglvnd ]}:$LD_LIBRARY_PATH" + # OpenGL + export LD_LIBRARY_PATH="${ + pkgs.lib.makeLibraryPath [ + pkgs.libglvnd + pkgs.vulkan-tools + ] + }:$LD_LIBRARY_PATH" - export QT_PLUGIN_PATH="${qt6.qtbase}/lib/qt-6/plugins" - export QT_QPA_PLATFORM="xcb" - export LDFLAGS="-L${llvmPackages.libcxx}/lib -lc++" + export LDFLAGS="-L${pkgs.llvmPackages_18.libcxx}/lib -lc++" export LC_ALL="C.UTF-8" export XAUTHORITY=${builtins.getEnv "XAUTHORITY"} ''; - }