mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-29 10:23:29 +00:00
173 lines
3.7 KiB
Nix
173 lines
3.7 KiB
Nix
{
|
|
alsa-lib,
|
|
boost,
|
|
catch2_3,
|
|
cmake,
|
|
cryptopp,
|
|
cpp-jwt,
|
|
doxygen,
|
|
enet,
|
|
fetchzip,
|
|
fmt,
|
|
ffmpeg_6-headless,
|
|
gamemode,
|
|
httplib,
|
|
inih,
|
|
lib,
|
|
libGL,
|
|
libjack2,
|
|
libpulseaudio,
|
|
libunwind,
|
|
libusb1,
|
|
nlohmann_json,
|
|
openal,
|
|
openssl,
|
|
pipewire,
|
|
pkg-config,
|
|
portaudio,
|
|
sndio,
|
|
spirv-tools,
|
|
soundtouch,
|
|
stdenv,
|
|
vulkan-headers,
|
|
vulkan-loader,
|
|
xorg,
|
|
zstd,
|
|
enableSdl2Frontend ? true,
|
|
SDL2,
|
|
enableQt ? true,
|
|
kdePackages,
|
|
enableQtTranslations ? enableQt,
|
|
enableCubeb ? true,
|
|
cubeb,
|
|
useDiscordRichPresence ? false,
|
|
rapidjson,
|
|
}:
|
|
let
|
|
inherit (lib)
|
|
optional
|
|
optionals
|
|
cmakeBool
|
|
optionalString
|
|
getLib
|
|
makeLibraryPath
|
|
;
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "lime3ds";
|
|
version = "2119";
|
|
|
|
src = fetchzip {
|
|
url = "https://github.com/Lime3DS/Lime3DS/releases/download/${finalAttrs.version}/lime3ds-unified-source-${finalAttrs.version}.tar.xz";
|
|
hash = "sha256-cBPSzkvvivWGTD2E7fjeY3uJ1nSlALbOgIalGdk6xLU=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
doxygen
|
|
pkg-config
|
|
] ++ lib.optionals enableQt [ kdePackages.wrapQtAppsHook ];
|
|
|
|
buildInputs =
|
|
[
|
|
alsa-lib
|
|
boost
|
|
catch2_3
|
|
cryptopp
|
|
cpp-jwt
|
|
enet
|
|
fmt
|
|
ffmpeg_6-headless
|
|
httplib
|
|
inih
|
|
libGL
|
|
libjack2
|
|
libpulseaudio
|
|
libunwind
|
|
libusb1
|
|
nlohmann_json
|
|
openal
|
|
openssl
|
|
pipewire
|
|
portaudio
|
|
soundtouch
|
|
sndio
|
|
spirv-tools
|
|
vulkan-headers
|
|
xorg.libX11
|
|
xorg.libXext
|
|
zstd
|
|
]
|
|
++ optionals enableQt (
|
|
with kdePackages;
|
|
[
|
|
qtbase
|
|
qtmultimedia
|
|
qttools
|
|
qtwayland
|
|
]
|
|
)
|
|
++ optionals enableSdl2Frontend [ SDL2 ]
|
|
++ optionals enableQtTranslations [ kdePackages.qttools ]
|
|
++ optionals enableCubeb [ cubeb ]
|
|
++ optional useDiscordRichPresence rapidjson;
|
|
|
|
postPatch = ''
|
|
# Fix file not found when looking in var/empty instead of opt
|
|
mkdir externals/dynarmic/src/dynarmic/ir/var
|
|
ln -s ../opt externals/dynarmic/src/dynarmic/ir/var/empty
|
|
|
|
# We already know the submodules are present
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace-fail "check_submodules_present()" ""
|
|
|
|
# Add gamemode
|
|
substituteInPlace externals/gamemode/include/gamemode_client.h \
|
|
--replace-fail "libgamemode.so.0" "${getLib gamemode}/lib/libgamemode.so.0"
|
|
'';
|
|
|
|
postInstall =
|
|
let
|
|
libs = makeLibraryPath [ vulkan-loader ];
|
|
in
|
|
optionalString enableSdl2Frontend ''
|
|
for binfile in lime3ds lime3ds-room
|
|
do
|
|
wrapProgram "$out/bin/$binfile" \
|
|
--prefix LD_LIBRARY_PATH : ${libs}
|
|
''
|
|
+ optionalString enableQt ''
|
|
qtWrapperArgs+=(
|
|
--prefix LD_LIBRARY_PATH : ${libs}
|
|
)
|
|
done
|
|
'';
|
|
|
|
cmakeFlags =
|
|
[
|
|
(cmakeBool "LIME3DS_USE_PRECOMPILED_HEADERS" false)
|
|
(cmakeBool "USE_SYSTEM_LIBS" true)
|
|
(cmakeBool "DISABLE_SYSTEM_DYNARMIC" true)
|
|
(cmakeBool "DISABLE_SYSTEM_GLSLANG" true)
|
|
(cmakeBool "DISABLE_SYSTEM_LODEPNG" true)
|
|
(cmakeBool "DISABLE_SYSTEM_VMA" true)
|
|
(cmakeBool "DISABLE_SYSTEM_XBYAK" true)
|
|
(cmakeBool "ENABLE_QT" enableQt)
|
|
(cmakeBool "ENABLE_SDL2_FRONTEND" enableSdl2Frontend)
|
|
(cmakeBool "ENABLE_CUBEB" enableCubeb)
|
|
(cmakeBool "USE_DISCORD_PRESENCE" useDiscordRichPresence)
|
|
]
|
|
++ optionals enableQt [
|
|
(cmakeBool "ENABLE_QT_TRANSLATION" enableQtTranslations)
|
|
];
|
|
|
|
meta = {
|
|
description = "A Nintendo 3DS emulator based on Citra";
|
|
homepage = "https://github.com/Lime3DS/Lime3DS";
|
|
license = lib.licenses.gpl2Only;
|
|
maintainers = with lib.maintainers; [ arthsmn ];
|
|
mainProgram = "lime3ds";
|
|
platforms = lib.platforms.linux;
|
|
};
|
|
})
|