mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-27 09:23:01 +00:00
8cb3340ffe
This also changes the update script for EA to fetch the two latest releases, filter for tags matching /^EA-[0-9]*/ and pick the latest one. This is required because recently the auto-updater (tag: continuous) is the latest release, which would have been picked by the update script. It also updates the free icons patch, which is needed due to yuzu changing how they track licenses of files to REUSE. The comment is updated to reflect the workflow that is needed to create the patch, because pineapple does not include files beginning with a dot in its source.
168 lines
3.8 KiB
Nix
168 lines
3.8 KiB
Nix
{ pname
|
||
, version
|
||
, src
|
||
, branch
|
||
, compat-list
|
||
|
||
, lib
|
||
, stdenv
|
||
, runCommandLocal
|
||
, substituteAll
|
||
, wrapQtAppsHook
|
||
, alsa-lib
|
||
, boost
|
||
, catch2
|
||
, cmake
|
||
, doxygen
|
||
, ffmpeg
|
||
, fmt_8
|
||
, glslang
|
||
, libjack2
|
||
, libopus
|
||
, libpulseaudio
|
||
, libusb1
|
||
, libva
|
||
, libzip
|
||
, lz4
|
||
, nlohmann_json
|
||
, perl
|
||
, pkg-config
|
||
, python3
|
||
, qtbase
|
||
, qttools
|
||
, qtwebengine
|
||
, rapidjson
|
||
, SDL2
|
||
, sndio
|
||
, speexdsp
|
||
, udev
|
||
, vulkan-headers
|
||
, vulkan-loader
|
||
, zlib
|
||
, zstd
|
||
}:
|
||
|
||
stdenv.mkDerivation rec {
|
||
inherit pname version src;
|
||
|
||
# Replace icons licensed under CC BY-ND 3.0 with free ones to allow
|
||
# for binary redistribution: https://github.com/yuzu-emu/yuzu/pull/8104
|
||
# The patch hosted on GitHub has the binary information in git format, which
|
||
# can’t be applied with patch(1), so it has been regenerated with
|
||
# "git format-patch --text --full-index --binary".
|
||
# Because pineapple strips all files beginning with a dot, the patch needs to
|
||
# be edited manually afterwards to remove all changes to those.
|
||
patches = [ ./yuzu-free-icons.patch ];
|
||
|
||
nativeBuildInputs = [
|
||
cmake
|
||
doxygen
|
||
perl
|
||
pkg-config
|
||
python3
|
||
wrapQtAppsHook
|
||
];
|
||
|
||
buildInputs = [
|
||
alsa-lib
|
||
boost
|
||
catch2
|
||
ffmpeg
|
||
fmt_8
|
||
glslang
|
||
libjack2
|
||
libopus
|
||
libpulseaudio
|
||
libusb1
|
||
libva
|
||
libzip
|
||
lz4
|
||
nlohmann_json
|
||
qtbase
|
||
qttools
|
||
qtwebengine
|
||
rapidjson
|
||
SDL2
|
||
sndio
|
||
speexdsp
|
||
udev
|
||
zlib
|
||
zstd
|
||
];
|
||
|
||
doCheck = true;
|
||
|
||
# This changes `ir/opt` to `ir/var/empty` in `externals/dynarmic/src/dynarmic/CMakeLists.txt`
|
||
# making the build fail, as that path does not exist
|
||
dontFixCmake = true;
|
||
|
||
cmakeFlags = [
|
||
"-DYUZU_USE_BUNDLED_QT=OFF"
|
||
"-DYUZU_USE_BUNDLED_FFMPEG=OFF"
|
||
"-DYUZU_USE_BUNDLED_OPUS=OFF"
|
||
"-DYUZU_USE_EXTERNAL_SDL2=OFF"
|
||
|
||
"-DENABLE_QT_TRANSLATION=ON"
|
||
"-DYUZU_USE_QT_WEB_ENGINE=ON"
|
||
"-DUSE_DISCORD_PRESENCE=ON"
|
||
|
||
# We dont want to bother upstream with potentially outdated compat reports
|
||
"-DYUZU_ENABLE_COMPATIBILITY_REPORTING=OFF"
|
||
"-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF" # We provide this deterministically
|
||
];
|
||
|
||
preConfigure = ''
|
||
# This prevents a check for submodule directories.
|
||
rm -f .gitmodules
|
||
|
||
# see https://github.com/NixOS/nixpkgs/issues/114044, setting this through cmakeFlags does not work.
|
||
cmakeFlagsArray+=(
|
||
"-DTITLE_BAR_FORMAT_IDLE=yuzu ${branch} ${version}"
|
||
"-DTITLE_BAR_FORMAT_RUNNING=yuzu ${branch} ${version} | {3}"
|
||
)
|
||
'';
|
||
|
||
# This must be done after cmake finishes as it overwrites the file
|
||
postConfigure = ''
|
||
ln -sf ${compat-list} ./dist/compatibility_list/compatibility_list.json
|
||
'';
|
||
|
||
# Fix vulkan detection
|
||
postFixup = ''
|
||
for bin in $out/bin/yuzu $out/bin/yuzu-cmd; do
|
||
wrapProgram $bin --prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib
|
||
done
|
||
'';
|
||
|
||
passthru.updateScript = runCommandLocal "yuzu-${branch}-updateScript" {
|
||
script = substituteAll {
|
||
src = ./update.sh;
|
||
inherit branch;
|
||
};
|
||
} "install -Dm755 $script $out";
|
||
|
||
meta = with lib; {
|
||
homepage = "https://yuzu-emu.org";
|
||
changelog = "https://yuzu-emu.org/entry";
|
||
description = "The ${branch} branch of an experimental Nintendo Switch emulator written in C++";
|
||
longDescription = ''
|
||
An experimental Nintendo Switch emulator written in C++.
|
||
Using the mainline branch is recommanded for general usage.
|
||
Using the early-access branch is recommanded if you would like to try out experimental features, with a cost of stability.
|
||
'';
|
||
mainProgram = "yuzu";
|
||
platforms = [ "x86_64-linux" ];
|
||
license = with licenses; [
|
||
gpl3Plus
|
||
# Icons. Note that this would be cc0 and cc-by-nd-30 without the "yuzu-free-icons" patch
|
||
asl20 mit cc0
|
||
];
|
||
maintainers = with maintainers; [
|
||
ashley
|
||
ivar
|
||
joshuafern
|
||
sbruder
|
||
];
|
||
};
|
||
}
|