diff --git a/pkgs/applications/emulators/cemu/cmakelists.patch b/pkgs/by-name/ce/cemu/0000-spirv-tools-opt-cmakelists.patch similarity index 100% rename from pkgs/applications/emulators/cemu/cmakelists.patch rename to pkgs/by-name/ce/cemu/0000-spirv-tools-opt-cmakelists.patch diff --git a/pkgs/applications/emulators/cemu/default.nix b/pkgs/by-name/ce/cemu/package.nix similarity index 55% rename from pkgs/applications/emulators/cemu/default.nix rename to pkgs/by-name/ce/cemu/package.nix index c5860d3b0b26..3a009ea0cb3b 100644 --- a/pkgs/applications/emulators/cemu/default.nix +++ b/pkgs/by-name/ce/cemu/package.nix @@ -1,34 +1,37 @@ -{ lib, stdenv, fetchFromGitHub -, addOpenGLRunpath -, wrapGAppsHook3 -, cmake -, glslang -, nasm -, pkg-config - -, SDL2 -, boost -, cubeb -, curl -, fmt_9 -, glm -, gtk3 -, hidapi -, imgui -, libpng -, libusb1 -, libzip -, libXrender -, pugixml -, rapidjson -, vulkan-headers -, wayland -, wxGTK32 -, zarchive -, gamemode -, vulkan-loader - -, nix-update-script +{ + lib, + SDL2, + addOpenGLRunpath, + boost, + cmake, + cubeb, + curl, + fetchFromGitHub, + fmt_9, + gamemode, + glm, + glslang, + gtk3, + hidapi, + imgui, + libXrender, + libpng, + libusb1, + libzip, + nasm, + ninja, + nix-update-script, + pkg-config, + pugixml, + rapidjson, + stdenv, + testers, + vulkan-headers, + vulkan-loader, + wayland, + wrapGAppsHook3, + wxGTK32, + zarchive, }: let @@ -43,31 +46,32 @@ let sha256 = "sha256-gf47uLeNiXQic43buB5ZnMqiotlUfIyAsP+3H7yJuFg="; }; }; - -in stdenv.mkDerivation rec { +in stdenv.mkDerivation (finalAttrs: { pname = "cemu"; - version = "2.0-85"; + version = "2.0-86"; src = fetchFromGitHub { owner = "cemu-project"; repo = "Cemu"; - rev = "v${version}"; - hash = "sha256-uMVbKJhdHLLKsJnj7YFIG+S5pm7rSZfBSWebhTP01Y8="; + rev = "v${finalAttrs.version}"; + hash = "sha256-AS5Qo4J0U1MeTYWl4jiJMi879bhBuioU1BikxGKtUrE="; }; patches = [ # glslangTargets want SPIRV-Tools-opt to be defined: # > The following imported targets are referenced, but are missing: # > SPIRV-Tools-opt - ./cmakelists.patch + ./0000-spirv-tools-opt-cmakelists.patch ]; nativeBuildInputs = [ + SDL2 addOpenGLRunpath wrapGAppsHook3 cmake glslang nasm + ninja pkg-config ]; @@ -94,24 +98,26 @@ in stdenv.mkDerivation rec { ]; cmakeFlags = [ - "-DCMAKE_C_FLAGS_RELEASE=-DNDEBUG" - "-DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG" - "-DENABLE_VCPKG=OFF" - "-DENABLE_FERAL_GAMEMODE=ON" + (lib.cmakeFeature "CMAKE_C_FLAGS_RELEASE" "-DNDEBUG") + (lib.cmakeFeature "CMAKE_CXX_FLAGS_RELEASE" "-DNDEBUG") + (lib.cmakeBool "ENABLE_VCPKG" false) + (lib.cmakeBool "ENABLE_FERAL_GAMEMODE" true) - # PORTABLE: - # "All data created and maintained by Cemu will be in the directory where the executable file is located" - "-DPORTABLE=OFF" + # PORTABLE: "All data created and maintained by Cemu will be in + # the directory where the executable file is located" + (lib.cmakeBool "PORTABLE" false) ]; - preConfigure = with lib; let - tag = last (splitString "-" version); + strictDeps = true; + + preConfigure = let + tag = lib.last (lib.splitString "-" finalAttrs.version); in '' rm -rf dependencies/imgui # cemu expects imgui source code, not just header files ln -s ${imgui'.src} dependencies/imgui - substituteInPlace src/Common/version.h --replace " (experimental)" "-${tag} (experimental)" - substituteInPlace dependencies/gamemode/lib/gamemode_client.h --replace "libgamemode.so.0" "${gamemode.lib}/lib/libgamemode.so.0" + substituteInPlace src/Common/version.h --replace-fail " (experimental)" "-${tag} (experimental)" + substituteInPlace dependencies/gamemode/lib/gamemode_client.h --replace-fail "libgamemode.so.0" "${gamemode.lib}/lib/libgamemode.so.0" ''; installPhase = '' @@ -138,14 +144,21 @@ in stdenv.mkDerivation rec { ) ''; - passthru.updateScript = nix-update-script { }; - - meta = with lib; { - description = "Cemu is a Wii U emulator"; - homepage = "https://cemu.info"; - license = licenses.mpl20; - platforms = [ "x86_64-linux" ]; - maintainers = with maintainers; [ zhaofengli baduhai ]; - mainProgram = "cemu"; + passthru = { + updateScript = nix-update-script { }; + tests = { + version = testers.testVersion { + package = finalAttrs.finalPackage; + }; + }; }; -} + + meta = { + description = "Software to emulate Wii U games and applications on PC"; + homepage = "https://cemu.info"; + license = lib.licenses.mpl20; + mainProgram = "cemu"; + maintainers = with lib.maintainers; [ zhaofengli baduhai AndersonTorres ]; + platforms = [ "x86_64-linux" ]; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 290279f78a99..49ad98fcbb79 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2595,8 +2595,6 @@ with pkgs; cdemu-daemon = callPackage ../applications/emulators/cdemu/daemon.nix { }; - cemu = callPackage ../applications/emulators/cemu { }; - cen64 = callPackage ../applications/emulators/cen64 { }; citations = callPackage ../applications/misc/citations { };