update flake lock and fix errors, as well as remove yuzu-likes

This commit is contained in:
Tyler Starr 2025-02-01 16:09:17 -08:00
parent 0f923b74c2
commit df3a063d17
15 changed files with 30 additions and 643 deletions

72
provision/flake.lock generated
View File

@ -8,11 +8,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1723293904,
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
"lastModified": 1736955230,
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
"owner": "ryantm",
"repo": "agenix",
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
"type": "github"
},
"original": {
@ -46,11 +46,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
@ -59,24 +59,6 @@
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -105,11 +87,11 @@
]
},
"locked": {
"lastModified": 1732482255,
"narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=",
"lastModified": 1738448366,
"narHash": "sha256-4ATtQqBlgsGqkHTemta0ydY6f7JBRXz4Hf574NHQpkg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a9953635d7f34e7358d5189751110f87e3ac17da",
"rev": "18fa9f323d8adbb0b7b8b98a8488db308210ed93",
"type": "github"
},
"original": {
@ -121,11 +103,11 @@
"jovian-nixos": {
"flake": false,
"locked": {
"lastModified": 1732648910,
"narHash": "sha256-1F83DUfEHnCZpGY4UOlWaamWoDx8eZ9tHaUF51p2hng=",
"lastModified": 1738443663,
"narHash": "sha256-Rx3E+LRYRYvWFhjIE2bMpybL6Ac5NgdSpEOX70NATuE=",
"ref": "development",
"rev": "e86d2ad72094354326887bd6fe156f327d63d491",
"revCount": 1033,
"rev": "bdf32c9d74f824250e683003bd44596f0b93c81a",
"revCount": 1099,
"type": "git",
"url": "https://github.com/Jovian-Experiments/Jovian-NixOS"
},
@ -138,17 +120,16 @@
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1731682434,
"narHash": "sha256-HnZFPB7akVIy0KuPq/tEkiB+Brt1qi0DUIDzR8z25qI=",
"lastModified": 1736095716,
"narHash": "sha256-csysw/Szu98QDiA2lhWk9seYOyCebeVEWL89zh1cduM=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "a6b9cf0b7805e2c50829020a73e7bde683fd36dd",
"rev": "63c3b4ed1712a3a0621002cd59bfdc80875ecbb0",
"type": "github"
},
"original": {
@ -175,11 +156,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1732521221,
"narHash": "sha256-2ThgXBUXAE1oFsVATK1ZX9IjPcS4nKFOAjhPNKuiMn0=",
"lastModified": 1738410390,
"narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4633a7c72337ea8fd23a4f2ba3972865e3ec685d",
"rev": "3a228057f5b619feb3186e986dbe76278d707b6e",
"type": "github"
},
"original": {
@ -212,21 +193,6 @@
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",

View File

@ -17,7 +17,6 @@ in {
vesktop # Voice, video, and text communication platform for communities and friends
inkscape # Vector graphics editor for creating illustrations, icons, logos, diagrams, and more
libreoffice-fresh # Office suite compatible with Microsoft Office
xournal # Note-taking and sketching application
mpv # Media player for playing audio and video files
p7zip # Command-line file archiver with high compression ratio
gimp # GNU Image Manipulation Program for editing and composing raster images

View File

@ -25,7 +25,6 @@ in {
evolution # Personal information management application that provides email, calendar, and contact management features
gnomeExtensions.custom-hot-corners-extended # GNOME Shell extension for changing window focus behavior
gnomeExtensions.alphabetical-app-grid # Alphabetically order the app grid and folders
gnome-fullscreen-to-empty-workspace # New, maximized and fullscreen windows will be moved to empty workspaces
gnome-set-panel-monitor # Set monitor for panel to appear on
stacks-in-gnome # TBD
gnome-randr # Xrandr-like CLI for configuring displays on GNOME/Wayland
@ -63,7 +62,7 @@ in {
};
# Enable sound and handle conflict (https://github.com/Jovian-Experiments/Jovian-NixOS/issues/99)
hardware.pulseaudio.enable = lib.mkForce false;
services.pulseaudio.enable = lib.mkForce false;
xdg.mime = {
enable = true;
@ -124,7 +123,6 @@ in {
disable-user-extensions = false;
enabled-extensions = [
"focus-changer@heartmire"
"fullscreen-to-empty-workspace@aiono.dev"
"gnome-set-panel-monitor@tstarr.us"
"custom-hot-corners-extended@G-dH.github.com"
"AlphabeticalAppGrid@stuarthayhurst"

View File

@ -1,26 +1,23 @@
{ config, lib, pkgs, user, ... }:
let cfg = config.modules.gaming.emulation;
retroarchWithCores = (pkgs.retroarch.withCores (cores: with cores; [
nestopia # Nintendo Entertainment System (NES) emulator
snes9x # Super Nintendo Entertainment System (SNES) emulator
mgba # Game Boy Advance emulator
melonds # Nintendo DS emulator
citra # Fuck Nintendo a third time
]));
in {
options.modules.gaming.emulation.enable = lib.mkEnableOption "emulation";
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
ryujinx # Fuck Nintendo
yuzu # Fuck Nintendo again
sudachi # Nintendo Switch emulator written in C++
dolphin-emu # GameCube and Wii emulator
ppsspp # PSP emulator
mgba # Game Boy Advance emulator
rpcs3 # PS3 emulator/debugger
(retroarch.override {
cores = with libretro; [
nestopia # Nintendo Entertainment System (NES) emulator
snes9x # Super Nintendo Entertainment System (SNES) emulator
mgba # Game Boy Advance emulator
melonds # Nintendo DS emulator
citra # Fuck Nintendo a third time
];
})
retroarchWithCores # frontend for emulators and specific cores
];
};
}

View File

@ -12,7 +12,7 @@ in {
];
hardware.graphics.enable = true; # https://github.com/NixOS/nixpkgs/issues/47932
hardware.pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
services.pulseaudio.support32Bit = config.hardware.pulseaudio.enable;
hardware.steam-hardware.enable = true;
programs.steam = {

View File

@ -6,7 +6,7 @@ in {
config = lib.mkIf cfg.enable {
home-manager.users.${user} = {
home.packages = with pkgs; [
nerdfonts
nerd-fonts.jetbrains-mono
];
programs.kitty = {

View File

@ -1,12 +1,8 @@
final: prev: {
advcpmv = final.callPackage ../pkgs/advcpmv.nix {};
ftw = final.callPackage ../pkgs/ftw.nix {};
gnome-fullscreen-to-empty-workspace = final.callPackage ../pkgs/gnome-fullscreen-to-empty-workspace/default.nix {};
gnome-set-panel-monitor = final.callPackage ../pkgs/gnome-set-panel-monitor.nix {};
stacks-in-gnome = final.callPackage ../pkgs/stacks-in-gnome.nix {};
nx_tzdb = final.callPackage ../pkgs/nx_tzdb.nix {};
pySVS = final.callPackage ../pkgs/pySVS.nix {};
ryujinx = final.callPackage ../pkgs/ryujinx/default.nix {};
sudachi = final.qt6.callPackage ../pkgs/sudachi/default.nix {};
yuzu = final.libsForQt5.callPackage ../pkgs/yuzu/default.nix {};
}

View File

@ -1,35 +0,0 @@
{ lib, stdenv, fetchFromGitHub, glib }:
stdenv.mkDerivation {
pname = "gnome-fullscreen-to-new-workspace";
version = "git-2023-08-19";
src = fetchFromGitHub {
owner = "onsah";
repo = "fullscreen-to-new-workspace";
rev = "26014b6f8d569891381ab2ebc75c74a51d2454df";
hash = "sha256-S9mvODQqOBCmA+L1TBJm/c1v5Y+qVKuFpQf799LEwcI=";
};
patches = [
./version.patch
];
installPhase = ''
runHook preInstall
mkdir -p "$out/share/gnome-shell/extensions/fullscreen-to-empty-workspace@aiono.dev"
cp -r src/* "$out/share/gnome-shell/extensions/fullscreen-to-empty-workspace@aiono.dev"
runHook postInstall
'';
passthru = {
extensionUuid = "fullscreen-to-empty-workspace@aiono.dev";
extensionPortalSlug = "fullscreen-to-empty-workspace";
};
meta = with lib; {
description = "New, maximized and fullscreen windows will be moved to empty workspaces.";
maintainers = with maintainers; [ onsah starr-dusT ];
homepage = "https://github.com/onsah/fullscreen-to-new-workspace";
};
}

View File

@ -1,17 +0,0 @@
diff --git a/src/metadata.json b/src/metadata.json
index 66a2ea3..a98e00c 100644
--- a/src/metadata.json
+++ b/src/metadata.json
@@ -4,8 +4,9 @@
"url": "https://github.com/onsah/fullscreen-to-new-workspace",
"uuid": "fullscreen-to-empty-workspace@aiono.dev",
"shell-version": [
- "46"
+ "47"
],
"version": 15,
"settings-schema": "org.gnome.shell.extensions.fullscreen-to-empty-workspace"
-}
\ No newline at end of file
+}
+

View File

@ -1,20 +0,0 @@
{ stdenv, fetchurl, unzip, gitUpdater }:
stdenv.mkDerivation rec {
pname = "nx_tzdb";
version = "221202";
src = fetchurl {
url = "https://git.tstarr.us/tstarr/tzdb_to_nx/releases/download/221202/221202.zip";
hash = "sha256-mRzW+iIwrU1zsxHmf+0RArU8BShAoEMvCz+McXFFK3c=";
};
nativeBuildInputs = [ unzip ];
buildCommand = ''
unzip $src -d $out
'';
passthru.updateScript = gitUpdater {
url = "https://git.tstarr.us/tstarr/tzdb_to_nx";
};
}

View File

@ -1,205 +0,0 @@
{
lib,
stdenv,
fetchzip,
fetchFromGitea,
cmake,
glslang,
pkg-config,
qttools,
wrapQtAppsHook,
boost,
fmt,
lz4,
nlohmann_json,
qtbase,
qtmultimedia,
qtwayland,
qtwebengine,
zlib,
zstd,
rapidjson,
libva,
libvdpau,
nv-codec-headers-12,
yasm,
autoconf,
automake,
libtool,
spirv-headers,
catch2_3,
vulkan-loader,
vulkan-headers,
SDL2,
}:
let
# Derived from externals/nx_tzdb/CMakeLists.txt
nx_tzdb = fetchzip {
url = "https://github.com/lat9nq/tzdb_to_nx/releases/download/221202/221202.zip";
hash = "sha256-YOIElcKTiclem05trZsA3YJReozu/ex7jJAKD6nAMwc=";
stripRoot = false;
};
suyu = fetchFromGitea {
domain = "git.suyu.dev";
owner = "suyu";
repo = "suyu";
rev = "ee365bad9501c73ff49936e72ec91cd9c3ce5c24";
hash = "sha256-vw9VcSbCaG4MS0PL/fJ73CDALLbd3n0CBT7gkyp5hRc=";
fetchSubmodules = true;
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "sudachi";
version = "1.0.11";
src = fetchzip {
url = "https://github.com/emuplace/sudachi.emuplace.app/releases/download/v1.0.11/latest.zip";
hash = "sha256-HNNND8g9JyvrMjQxHq4udUtskGkqaISpq0TnzE2rb/U=";
stripRoot = false;
};
patches = [
./remove_agx.patch
./sdl2_fix.patch
];
nativeBuildInputs = [
cmake
glslang
pkg-config
qttools
wrapQtAppsHook
];
buildInputs = [
vulkan-headers
boost
fmt
lz4
SDL2
nlohmann_json
qtbase
qtmultimedia
qtwayland
qtwebengine
zlib
zstd
# vendored discord-rpc deps
rapidjson
# vendored ffmpeg deps
libva # for accelerated video decode on non-nvidia
libvdpau # for accelerated video decode on non-nvidia
nv-codec-headers-12 # for accelerated video decode on nvidia
yasm
# vendored libusb deps
autoconf
automake
libtool
# vendored sirit deps
spirv-headers
];
cmakeFlags = [
# actually has a noticeable performance impact
"-DSUDACHI_ENABLE_LTO=ON"
# build with qt6
"-DENABLE_QT6=ON"
# enable some optional features
"-DSUDACHI_USE_QT_WEB_ENGINE=ON"
"-DSUDACHI_USE_QT_MULTIMEDIA=ON"
"-DUSE_DISCORD_PRESENCE=ON"
# compatibility list currently 404's
"-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF"
# don't check for missing submodules
"-DSUDACHI_CHECK_SUBMODULES=OFF"
# use system libraries
# NB: "external" here means "from the externals/ directory in the source",
# so "off" means "use system"
"-DSUDACHI_USE_EXTERNAL_VULKAN_HEADERS=OFF"
# Disable SDL2
# SDL flags are broken somehow in 1.0.11 and fix is hacked in with a patch
# don't use system ffmpeg, sudachi uses internal APIs
"-DSUDACHI_USE_BUNDLED_FFMPEG=ON"
"-DFFmpeg_COMPONENTS='swscale;avutil;avfilter;avcodec'"
"-DFFmpeg_PREFIX=$src/externals/ffmpeg/ffmpeg"
# use system spriv headers for sirit
"-DSIRIT_USE_SYSTEM_SPIRV_HEADERS=ON"
];
# Does some handrolled SIMD
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isx86_64 "-msse4.1";
# 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;
prePatch = ''
# Copy suyu externals
rm -R externals/
cp -R ${suyu}/externals .
# replace "SUYU" with "SUDACHI" in externals cmake args
chmod u+rw -R externals/
grep -rl SUYU | xargs sed -i 's/SUYU/SUDACHI/g'
'';
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
'';
doCheck = true;
checkInputs = [ catch2_3 ];
# Fixes vulkan detection.
# FIXME: patchelf --add-rpath corrupts the binary for some reason, investigate
qtWrapperArgs = [ "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib" ];
postInstall = ''
install -Dm444 "$src/dist/72-sudachi-input.rules" "$out/lib/udev/rules.d/72-sudachi-input.rules"
mkdir -p "$out/share/sudachi"
cp -R "$src" "$out/share/sudachi/src"
'';
meta = with lib; {
description = "Nintendo Switch emulator written in C++";
homepage = "https://sudachiemu.com/";
changelog = "https://sudachi.emuplace.app/";
mainProgram = "sudachi";
platforms = [
"aarch64-linux"
"x86_64-linux"
];
license = with licenses; [
gpl3Plus
# Icons
asl20
mit
cc0
];
maintainers = with maintainers; [ starr-dusT ];
};
})

View File

@ -1,16 +0,0 @@
Submodule externals/Vulkan-Utility-Libraries contains modified content
diff --git a/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h b/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
index 9d2af46..bb490ac 100644
--- a/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
+++ b/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
@@ -3478,8 +3478,8 @@ static inline const char* string_VkDriverId(VkDriverId input_value) {
return "VK_DRIVER_ID_MESA_NVK";
case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA:
return "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA";
- case VK_DRIVER_ID_MESA_AGXV:
- return "VK_DRIVER_ID_MESA_AGXV";
+ //case VK_DRIVER_ID_MESA_AGXV:
+ // return "VK_DRIVER_ID_MESA_AGXV";
default:
return "Unhandled VkDriverId";
}

View File

@ -1,43 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ed30417..7c1da0b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -535,34 +535,10 @@ if(ENABLE_QT)
endif()
-# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the sudachi_find_package
-if (ENABLE_SDL2 AND NOT USE_SDL2_FROM_EXTERNALS)
- if (SUDACHI_USE_BUNDLED_SDL2)
- # Detect toolchain and platform
- if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64)
- set(SDL2_VER "SDL2-2.28.2")
- else()
- message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable SUDACHI_USE_BUNDLED_SDL2 and provide your own.")
- endif()
-
- if (DEFINED SDL2_VER)
- download_bundled_external("sdl2/" ${SDL2_VER} SDL2_PREFIX)
- endif()
-
- set(SDL2_FOUND YES)
- set(SDL2_INCLUDE_DIR "${SDL2_PREFIX}/include" CACHE PATH "Path to SDL2 headers")
- set(SDL2_LIBRARY "${SDL2_PREFIX}/lib/x64/SDL2.lib" CACHE PATH "Path to SDL2 library")
- set(SDL2_DLL_DIR "${SDL2_PREFIX}/lib/x64/" CACHE PATH "Path to SDL2.dll")
-
- add_library(SDL2::SDL2 INTERFACE IMPORTED)
- target_link_libraries(SDL2::SDL2 INTERFACE "${SDL2_LIBRARY}")
- target_include_directories(SDL2::SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
- elseif (USE_SDL2_FROM_EXTERNALS)
- message(STATUS "Using SDL2 from externals.")
- else()
- find_package(SDL2 2.26.4 REQUIRED)
- endif()
-endif()
+# Nixos needs to use packaged SDL2. There is something up with these flags that
+# doesn't currently work properly so here is a quick hack. I'd investigate and
+# report to the dev, but you all are dicks who drove him out. Fuck you all.
+find_package(SDL2 2.26.4 REQUIRED)
if (UNIX AND NOT APPLE AND NOT ANDROID)
find_package(PkgConfig REQUIRED)

View File

@ -1,217 +0,0 @@
{ lib
, stdenv
, fetchFromGitea
, nix-update-script
, wrapQtAppsHook
, autoconf
, boost
, catch2_3
, cmake
, cpp-jwt
, cubeb
, discord-rpc
, enet
, fmt
, glslang
, libopus
, libusb1
, libva
, lz4
, nlohmann_json
, nv-codec-headers-12
, pkg-config
, qtbase
, qtmultimedia
, qttools
, qtwayland
, qtwebengine
, SDL2
, vulkan-headers
, vulkan-loader
, yasm
, zlib
, zstd
, fetchzip
, fetchgit
, runCommand
, gnutar
, nx_tzdb
}:
let
suyu = fetchFromGitea {
domain = "git.suyu.dev";
owner = "suyu";
repo = "suyu";
rev = "ee365bad9501c73ff49936e72ec91cd9c3ce5c24";
hash = "sha256-vw9VcSbCaG4MS0PL/fJ73CDALLbd3n0CBT7gkyp5hRc=";
fetchSubmodules = true;
};
in
stdenv.mkDerivation(finalAttrs: {
pname = "yuzu";
version = "4176";
src = fetchFromGitea {
domain = "git.tstarr.us";
owner = "tstarr";
repo = "yuzu-mainline";
rev = "d3a974b64679229e77a3af921994dab82d092249";
hash = "sha256-sn/CfaZkS3noDH9lmEtIES6Xc7aoZ5tbHo1AJc5nxac=";
fetchSubmodules = true;
};
patches = [
./remove_agx.patch
];
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 = lib.optionalString stdenv.hostPlatform.isx86_64 "-msse4.1";
# Fixes vulkan detection.
# FIXME: patchelf --add-rpath corrupts the binary for some reason, investigate
qtWrapperArgs = [
"--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib"
];
prePatch = ''
# Copy suyu externals
rm -R externals/
cp -R ${suyu}/externals .
# replace "SUYU" with "YUZU" in externals cmake args
chmod u+rw -R externals/
grep -rl SUYU | xargs sed -i 's/SUYU/YUZU/g'
'';
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
'';
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++";
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 = [ "aarch64-linux" "x86_64-linux" ];
license = with licenses; [
gpl3Plus
# Icons
asl20 mit cc0
];
maintainers = with maintainers; [
ashley
ivar
joshuafern
sbruder
k900
];
};
})

View File

@ -1,16 +0,0 @@
Submodule externals/Vulkan-Utility-Libraries contains modified content
diff --git a/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h b/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
index 9d2af46..bb490ac 100644
--- a/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
+++ b/externals/Vulkan-Utility-Libraries/include/vulkan/vk_enum_string_helper.h
@@ -3478,8 +3478,8 @@ static inline const char* string_VkDriverId(VkDriverId input_value) {
return "VK_DRIVER_ID_MESA_NVK";
case VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA:
return "VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA";
- case VK_DRIVER_ID_MESA_AGXV:
- return "VK_DRIVER_ID_MESA_AGXV";
+ //case VK_DRIVER_ID_MESA_AGXV:
+ // return "VK_DRIVER_ID_MESA_AGXV";
default:
return "Unhandled VkDriverId";
}