diff --git a/.gitignore b/.gitignore index 581da8a..1579bd4 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ result *.nix.bak *.nix~ /nix/store/ +file.txt + *~ *.swp diff --git a/flake.nix b/flake.nix index d42e614..44f59e9 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { - url = "github:fufexan/nix-gaming"; # for glorious eggrolls + url = "github:fufexan/nix-gaming"; }; rpcs3-latest = { url = "github:RPCS3/rpcs3"; @@ -37,7 +37,7 @@ version = "1.15"; src = prev.fetchurl { url = "https://github.com/zeux/pugixml/releases/download/v${version}/pugixml-${version}.tar.gz"; - sha256 = "ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo="; + sha256 = "sha256-ZVreV/pwP7QhwuuaARO1BkvdsUXUFd0fiMeTU9kNURo="; }; }); SDL3 = prev.stdenv.mkDerivation rec { @@ -47,7 +47,7 @@ owner = "libsdl-org"; repo = "SDL"; rev = "preview-${version}"; - sha256 = "XQwcl/udA+r5HJs21K+GtZ2GIXfXUHjYTXFYW4Yx+Do="; + sha256 = "sha256-S7yRcLHMPgq6+gec8l+ESxp2dJ+6Po/UNsBUXptQzMQ="; }; nativeBuildInputs = [prev.cmake]; buildInputs = [ @@ -59,7 +59,20 @@ cmakeFlags = [ "-DSDL_STATIC=OFF" "-DSDL_SHARED=ON" + "-DSDL_CMAKE_DEBUG_POSTFIX=" + "-DSDL_INSTALL_CMAKEDIR=${placeholder "out"}/lib/cmake/SDL3" ]; + postInstall = '' + echo "SDL3 contents:" >&2 + ls -lR $out >&2 + if [ -f "$out/lib/cmake/SDL3/SDL3Config.cmake" ]; then + echo "SDL3Config.cmake:" >&2 + cat $out/lib/cmake/SDL3/SDL3Config.cmake >&2 + else + echo "ERROR: SDL3Config.cmake not found" >&2 + exit 1 + fi + ''; }; rpcs3 = prev.rpcs3.overrideAttrs (oldAttrs: { nativeBuildInputs = @@ -67,6 +80,11 @@ ++ [ prev.llvmPackages_18.llvm.dev prev.llvmPackages_18.clang + prev.pkg-config + prev.qt6.qmake + prev.qt6.full + prev.xxd + prev.wayland-scanner ]; buildInputs = (oldAttrs.buildInputs or []) @@ -74,7 +92,60 @@ prev.llvmPackages_18.llvm prev.llvmPackages_18.libclang final.SDL3 + prev.qt6.full + prev.vulkan-loader + prev.vulkan-tools + prev.wayland + prev.wayland-protocols + prev.libxkbcommon + prev.libpulseaudio + prev.libevdev + prev.udev + prev.glew + prev.libpng + prev.zstd ]; + cmakeFlags = + (oldAttrs.cmakeFlags or []) + ++ [ + "-DCMAKE_PREFIX_PATH=${final.SDL3};${prev.qt6.full};${prev.wayland}" + "-DSDL3_DIR=${final.SDL3}/lib/cmake/SDL3" + "-DSDL3_INCLUDE_DIR=${final.SDL3}/include/SDL3" + "-DSDL3_LIBRARY=${final.SDL3}/lib/libSDL3.so" + "-DQt6_DIR=${prev.qt6.full}/lib/cmake/Qt6" + "-DWAYLAND_SCANNER=${prev.wayland-scanner}/bin/wayland-scanner" + "-DUSE_SYSTEM_FFMPEG=ON" + "-DUSE_SYSTEM_CURL=ON" + "-DUSE_SYSTEM_WOLFSSL=ON" + "-DUSE_QT=ON" + "-DUSE_VULKAN=ON" + "-DUSE_WAYLAND=ON" + "-DUSE_PULSEAUDIO=ON" + "-DUSE_LIBEVDEV=ON" + "-DUSE_SYSTEM_ZSTD=ON" + "-DCMAKE_VERBOSE_MAKEFILE=ON" + "-DCMake_MESSAGE_LOG_LEVEL=TRACE" + ]; + preConfigure = '' + echo "Verifying submodule directories:" >&2 + ls -l 3rdparty/hidapi/hidapi 3rdparty/glslang/glslang 3rdparty/yaml-cpp/yaml-cpp 3rdparty/zstd/zstd >&2 + if [ ! -f 3rdparty/hidapi/hidapi/CMakeLists.txt ]; then + echo "ERROR: hidapi submodule not fetched correctly" >&2 + exit 1 + fi + echo "Original 3rdparty/CMakeLists.txt:" >&2 + cat 3rdparty/CMakeLists.txt >&2 + sed -i '/find_package(SDL3/ { + s/find_package(SDL3.*)/set(SDL3_FOUND TRUE)/ + a set(SDL3_INCLUDE_DIRS "${final.SDL3}/include/SDL3") + a set(SDL3_LIBRARIES "${final.SDL3}/lib/libSDL3.so") + }' 3rdparty/CMakeLists.txt + sed -i 's/message(FATAL_ERROR "SDL3 is not available on this system")/# Patched: SDL3 assumed available/' 3rdparty/CMakeLists.txt + echo "Patched 3rdparty/CMakeLists.txt:" >&2 + cat 3rdparty/CMakeLists.txt >&2 + echo "Checking submodules:" >&2 + ls -lR 3rdparty/hidapi 3rdparty/glslang 3rdparty/yaml-cpp 3rdparty/cubeb 3rdparty/zstd >&2 + ''; }); }; pkgs = import nixpkgs { @@ -85,7 +156,16 @@ lib = nixpkgs.lib; rpcs3_latest = pkgs.rpcs3.overrideAttrs (oldAttrs: { - src = rpcs3-latest; + src = pkgs.fetchgit { + url = "https://github.com/RPCS3/rpcs3.git"; + rev = inputs.rpcs3-latest.rev; # Should be 37dbd77628f44cdef3228bdfc03127365ec7383b per flake.lock + sha256 = "sha256-Yx0Qsc0r+5C0BqqsbJCv47QPeaNbaIut8s6Hcysy2mo="; # Confirmed for 37dbd77628f44cdef3228bdfc03127365ec7383b with submodules + fetchSubmodules = true; + }; + preUnpack = '' + echo "Source rev: ${inputs.rpcs3-latest.rev}" >&2 + echo "Expected rev: 37dbd77628f44cdef3228bdfc03127365ec7383b" >&2 + ''; }); in { nixosConfigurations = { diff --git a/home-manager/cobray.nix b/home-manager/cobray.nix index cb4c2b8..f6c2ef3 100644 --- a/home-manager/cobray.nix +++ b/home-manager/cobray.nix @@ -1,9 +1,4 @@ -{ - pkgs, - inputs, - rpcs3_latest, - ... -}: { +{pkgs, ...}: { imports = [ ./modules/dunst.nix ./modules/fish.nix @@ -16,7 +11,7 @@ ./modules/starship.nix ./modules/zellij.nix ./modules/ffmpeg.nix - (import ./modules/emulators.nix {inherit pkgs inputs rpcs3_latest;}) + ./modules/emulators.nix ]; home.username = "cobray";