mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-08-04 16:32:39 +00:00
Use cached nix packages from unstable channel
This commit is contained in:
parent
fee783ce16
commit
4691b804bd
188
shell.nix
188
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") { };
|
pkgs.mkShell {
|
||||||
|
|
||||||
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 {
|
|
||||||
name = "shadps4-build-env";
|
name = "shadps4-build-env";
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
clang
|
pkgs.llvmPackages_18.clang
|
||||||
cmake
|
pkgs.cmake
|
||||||
pkg-config
|
pkgs.pkg-config
|
||||||
git
|
pkgs.git
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
alsa-lib
|
pkgs.alsa-lib
|
||||||
libpulseaudio
|
pkgs.libpulseaudio
|
||||||
openal
|
pkgs.openal
|
||||||
openssl
|
pkgs.openssl
|
||||||
zlib
|
pkgs.zlib
|
||||||
libedit
|
pkgs.libedit
|
||||||
udev
|
pkgs.udev
|
||||||
libevdev
|
pkgs.libevdev
|
||||||
SDL2
|
pkgs.SDL2
|
||||||
jack2
|
pkgs.jack2
|
||||||
sndio
|
pkgs.sndio
|
||||||
qt6.qtbase
|
pkgs.qt6.qtbase
|
||||||
qt6.qttools
|
pkgs.qt6.qttools
|
||||||
qt6.qtmultimedia
|
pkgs.qt6.qtmultimedia
|
||||||
vulkanHeadersCustom
|
|
||||||
vulkanUtilsCustom
|
pkgs.vulkan-headers
|
||||||
ffmpeg
|
pkgs.vulkan-utility-libraries
|
||||||
fmt
|
pkgs.vulkan-tools
|
||||||
glslang
|
|
||||||
libxkbcommon
|
pkgs.ffmpeg
|
||||||
wayland
|
pkgs.fmt
|
||||||
xorg.libxcb
|
pkgs.glslang
|
||||||
xorg.xcbutil
|
pkgs.libxkbcommon
|
||||||
xorg.xcbutilkeysyms
|
pkgs.wayland
|
||||||
xorg.xcbutilwm
|
pkgs.xorg.libxcb
|
||||||
sdl3
|
pkgs.xorg.xcbutil
|
||||||
stb
|
pkgs.xorg.xcbutilkeysyms
|
||||||
qt6.qtwayland
|
pkgs.xorg.xcbutilwm
|
||||||
wayland
|
pkgs.sdl3
|
||||||
wayland-protocols
|
pkgs.stb
|
||||||
libxkbcommon
|
pkgs.qt6.qtwayland
|
||||||
|
pkgs.wayland-protocols
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
|
echo "Entering shadPS4 dev shell"
|
||||||
export QT_QPA_PLATFORM="wayland"
|
export QT_QPA_PLATFORM="wayland"
|
||||||
export QT_PLUGIN_PATH="${qt6.qtwayland}/lib/qt-6/plugins:${qt6.qtbase}/lib/qt-6/plugins"
|
export QT_PLUGIN_PATH="${pkgs.qt6.qtwayland}/lib/qt-6/plugins:${pkgs.qt6.qtbase}/lib/qt-6/plugins"
|
||||||
export QML2_IMPORT_PATH="${qt6.qtbase}/lib/qt-6/qml"
|
export QML2_IMPORT_PATH="${pkgs.qt6.qtbase}/lib/qt-6/qml"
|
||||||
export CMAKE_PREFIX_PATH="${vulkanHeadersCustom}:$CMAKE_PREFIX_PATH"
|
export CMAKE_PREFIX_PATH="${pkgs.vulkan-headers}:$CMAKE_PREFIX_PATH"
|
||||||
|
|
||||||
# NVIDIA/OpenGL
|
# OpenGL
|
||||||
export LD_LIBRARY_PATH="${lib.makeLibraryPath [ libglvnd ]}:$LD_LIBRARY_PATH"
|
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 LDFLAGS="-L${pkgs.llvmPackages_18.libcxx}/lib -lc++"
|
||||||
export QT_QPA_PLATFORM="xcb"
|
|
||||||
export LDFLAGS="-L${llvmPackages.libcxx}/lib -lc++"
|
|
||||||
export LC_ALL="C.UTF-8"
|
export LC_ALL="C.UTF-8"
|
||||||
export XAUTHORITY=${builtins.getEnv "XAUTHORITY"}
|
export XAUTHORITY=${builtins.getEnv "XAUTHORITY"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user