forked from mirrors/nixpkgs
14c13a6a77
and other improvements
82 lines
1.8 KiB
Nix
82 lines
1.8 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchFromGitHub
|
|
, cmake
|
|
, wrapQtAppsHook
|
|
, SDL2
|
|
, qtbase
|
|
, qtmultimedia
|
|
, boost17x
|
|
, libpulseaudio
|
|
, pkg-config
|
|
, libusb1
|
|
, zstd
|
|
, libressl
|
|
, alsa-lib
|
|
, rapidjson
|
|
, aacHleDecoding ? true
|
|
, fdk_aac
|
|
, ffmpeg-full
|
|
}:
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "citra";
|
|
version = "2021-11-01";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "citra-emu";
|
|
repo = "citra";
|
|
rev = "5a7d80172dd115ad9bc6e8e85cee6ed9511c48d0";
|
|
sha256 = "sha256-vy2JMizBsnRK9NBEZ1dxT7fP/HFhOZSsC+5P+Dzi27s=";
|
|
fetchSubmodules = true;
|
|
};
|
|
|
|
nativeBuildInputs = [ cmake wrapQtAppsHook pkg-config ];
|
|
buildInputs = [
|
|
SDL2
|
|
qtbase
|
|
qtmultimedia
|
|
libpulseaudio
|
|
boost17x
|
|
libusb1
|
|
alsa-lib
|
|
rapidjson # for discord-rpc
|
|
] ++ lib.optional aacHleDecoding [ fdk_aac ffmpeg-full ];
|
|
|
|
cmakeFlags = [
|
|
"-DUSE_SYSTEM_BOOST=ON"
|
|
"-DUSE_DISCORD_PRESENCE=ON"
|
|
] ++ lib.optionals aacHleDecoding [
|
|
"-DENABLE_FFMPEG_AUDIO_DECODER=ON"
|
|
"-DCITRA_USE_BUNDLED_FFMPEG=OFF"
|
|
];
|
|
|
|
postPatch = ''
|
|
# we already know the submodules are present
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace "check_submodules_present()" ""
|
|
|
|
# Trick configure system.
|
|
sed -n 's,^ *path = \(.*\),\1,p' .gitmodules | while read path; do
|
|
mkdir "$path/.git"
|
|
done
|
|
|
|
rm -rf externals/zstd externals/libressl
|
|
cp -r ${zstd.src} externals/zstd
|
|
tar xf ${libressl.src} -C externals/
|
|
mv externals/${libressl.name} externals/libressl
|
|
chmod -R a+w externals/zstd
|
|
'';
|
|
|
|
# Todo: cubeb audio backend (the default one) doesn't work on the SDL interface.
|
|
# Note that the two interfaces have two separate configuration files.
|
|
|
|
meta = with lib; {
|
|
homepage = "https://citra-emu.org";
|
|
description = "An open-source emulator for the Nintendo 3DS";
|
|
license = licenses.gpl2;
|
|
maintainers = with maintainers; [ abbradar ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|