generated from nix-community/nur-packages-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(pkgs/yuzu-early-access): build it in a unified way
- Loading branch information
Showing
10 changed files
with
277 additions
and
240 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
{ stdenvNoCC, source }: | ||
stdenvNoCC.mkDerivation { | ||
inherit (source) pname version src; | ||
buildCommand = '' | ||
cp $src/compatibility_list.json $out | ||
''; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
{ | ||
stdenv, | ||
unzip, | ||
source, | ||
}: | ||
stdenv.mkDerivation { | ||
inherit (source) pname version src; | ||
|
||
nativeBuildInputs = [ unzip ]; | ||
|
||
buildCommand = '' | ||
unzip $src -d $out | ||
''; | ||
} |
22 changes: 0 additions & 22 deletions
22
pkgs/to-normal-packages/yuzu-earyly-access/compat-list.nix
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,186 @@ | ||
{ qt6Packages, source }: | ||
let | ||
compat-list = qt6Packages.callPackage ./compat-list.nix { }; | ||
nx_tzdb = qt6Packages.callPackage ./nx_tzdb.nix { }; | ||
early-access = qt6Packages.callPackage ./early-access.nix { inherit compat-list nx_tzdb source; }; | ||
in | ||
early-access | ||
{ | ||
lib, | ||
stdenv, | ||
nix-update-script, | ||
wrapQtAppsHook, | ||
autoconf, | ||
boost, | ||
catch2_3, | ||
cmake, | ||
compat-list, | ||
cpp-jwt, | ||
cubeb, | ||
discord-rpc, | ||
enet, | ||
fmt, | ||
glslang, | ||
libopus, | ||
libusb1, | ||
libva, | ||
lz4, | ||
nlohmann_json, | ||
nv-codec-headers-12, | ||
nx_tzdb, | ||
pkg-config, | ||
qtbase, | ||
qtmultimedia, | ||
qttools, | ||
qtwayland, | ||
qtwebengine, | ||
SDL2, | ||
vulkan-headers, | ||
vulkan-loader, | ||
yasm, | ||
zlib, | ||
zstd, | ||
source, | ||
}: | ||
stdenv.mkDerivation (finalAttrs: { | ||
inherit (source) pname version src; | ||
|
||
nativeBuildInputs = [ | ||
cmake | ||
glslang | ||
pkg-config | ||
qttools | ||
wrapQtAppsHook | ||
]; | ||
|
||
buildInputs = [ | ||
# vulkan-headers must come first, so the older propagated versions | ||
# don't get picked up by accident | ||
vulkan-headers | ||
|
||
boost | ||
catch2_3 | ||
cpp-jwt | ||
cubeb | ||
discord-rpc | ||
# intentionally omitted: dynarmic - prefer vendored version for compatibility | ||
enet | ||
|
||
# vendored ffmpeg deps | ||
autoconf | ||
yasm | ||
libva # for accelerated video decode on non-nvidia | ||
nv-codec-headers-12 # for accelerated video decode on nvidia | ||
# end vendored ffmpeg deps | ||
|
||
fmt | ||
# intentionally omitted: gamemode - loaded dynamically at runtime | ||
# intentionally omitted: httplib - upstream requires an older version than what we have | ||
libopus | ||
libusb1 | ||
# intentionally omitted: LLVM - heavy, only used for stack traces in the debugger | ||
lz4 | ||
nlohmann_json | ||
qtbase | ||
qtmultimedia | ||
qtwayland | ||
qtwebengine | ||
# intentionally omitted: renderdoc - heavy, developer only | ||
SDL2 | ||
# not packaged in nixpkgs: simpleini | ||
# intentionally omitted: stb - header only libraries, vendor uses git snapshot | ||
# not packaged in nixpkgs: vulkan-memory-allocator | ||
# intentionally omitted: xbyak - prefer vendored version for compatibility | ||
zlib | ||
zstd | ||
]; | ||
|
||
# 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 = [ | ||
# actually has a noticeable performance impact | ||
"-DYUZU_ENABLE_LTO=ON" | ||
|
||
# build with qt6 | ||
"-DENABLE_QT6=ON" | ||
"-DENABLE_QT_TRANSLATION=ON" | ||
|
||
# use system libraries | ||
# NB: "external" here means "from the externals/ directory in the source", | ||
# so "off" means "use system" | ||
"-DYUZU_USE_EXTERNAL_SDL2=OFF" | ||
"-DYUZU_USE_EXTERNAL_VULKAN_HEADERS=OFF" | ||
|
||
# don't use system ffmpeg, yuzu uses internal APIs | ||
"-DYUZU_USE_BUNDLED_FFMPEG=ON" | ||
|
||
# don't check for missing submodules | ||
"-DYUZU_CHECK_SUBMODULES=OFF" | ||
|
||
# enable some optional features | ||
"-DYUZU_USE_QT_WEB_ENGINE=ON" | ||
"-DYUZU_USE_QT_MULTIMEDIA=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 | ||
]; | ||
|
||
# Does some handrolled SIMD | ||
env.NIX_CFLAGS_COMPILE = "-msse4.1"; | ||
|
||
# Fixes vulkan detection. | ||
# FIXME: patchelf --add-rpath corrupts the binary for some reason, investigate | ||
qtWrapperArgs = [ "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib" ]; | ||
|
||
preConfigure = '' | ||
# see https://github.com/NixOS/nixpkgs/issues/114044, setting this through cmakeFlags does not work. | ||
cmakeFlagsArray+=( | ||
"-DTITLE_BAR_FORMAT_IDLE=${finalAttrs.pname} | ${finalAttrs.version} (nixpkgs) {}" | ||
"-DTITLE_BAR_FORMAT_RUNNING=${finalAttrs.pname} | ${finalAttrs.version} (nixpkgs) | {}" | ||
) | ||
# provide pre-downloaded tz data | ||
mkdir -p build/externals/nx_tzdb | ||
ln -s ${nx_tzdb} build/externals/nx_tzdb/nx_tzdb | ||
''; | ||
|
||
# This must be done after cmake finishes as it overwrites the file | ||
postConfigure = '' | ||
ln -sf ${compat-list} ./dist/compatibility_list/compatibility_list.json | ||
''; | ||
|
||
postInstall = '' | ||
install -Dm444 $src/dist/72-yuzu-input.rules $out/lib/udev/rules.d/72-yuzu-input.rules | ||
''; | ||
|
||
passthru.updateScript = nix-update-script { | ||
extraArgs = [ | ||
"--version-regex" | ||
"mainline-0-(.*)" | ||
]; | ||
}; | ||
|
||
meta = with lib; { | ||
homepage = "https://yuzu-emu.org"; | ||
changelog = "https://yuzu-emu.org/entry"; | ||
description = "An experimental Nintendo Switch emulator written in C++ - early access branch"; | ||
longDescription = '' | ||
An experimental Nintendo Switch emulator written in C++. | ||
Using the mainline branch is recommended for general usage. | ||
Using the early-access branch is recommended 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 | ||
asl20 | ||
mit | ||
cc0 | ||
]; | ||
maintainers = with maintainers; [ | ||
ashley | ||
ivar | ||
joshuafern | ||
sbruder | ||
k900 | ||
]; | ||
}; | ||
}) |
Oops, something went wrong.