diff --git a/flake.lock b/flake.lock index 74bb42c..4b8e88e 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1750386251, - "narHash": "sha256-1ovgdmuDYVo5OUC5NzdF+V4zx2uT8RtsgZahxidBTyw=", + "lastModified": 1776329215, + "narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "076e8c6678d8c54204abcb4b1b14c366835a58bb", + "rev": "b86751bc4085f48661017fa226dee99fab6c651b", "type": "github" }, "original": { diff --git a/pkgs/ryubing-canary/default.nix b/pkgs/ryubing-canary/default.nix new file mode 100644 index 0000000..5dd5e82 --- /dev/null +++ b/pkgs/ryubing-canary/default.nix @@ -0,0 +1,162 @@ +{ + lib, + buildDotnetModule, + cctools, + darwin, + dotnetCorePackages, + fetchFromForgejo, + libX11, + libgdiplus, + moltenvk, + ffmpeg, + openal, + libsoundio, + sndio, + stdenv, + pulseaudio, + vulkan-loader, + glew, + libGL, + libICE, + libSM, + libXcursor, + libXext, + libXi, + libXrandr, + udev, + SDL2, + SDL2_mixer, + gtk3, + wrapGAppsHook3, +}: + +buildDotnetModule rec { + pname = "ryubing"; + version = "1.3.4"; + + src = fetchFromForgejo { + domain = "git.ryujinx.app"; + owner = "Ryubing"; + repo = "Ryujinx"; + rev = "433dd58f8ce2fca3df3fa8b20bef7f003fc5a2a9"; + hash = "sha256-yLf0NkdZvGNI7bbzx3Qursk3rDy5UUK8nFH9pp3wYm4="; + }; + + nativeBuildInputs = + lib.optional stdenv.hostPlatform.isLinux [ + wrapGAppsHook3 + ] + ++ lib.optional stdenv.hostPlatform.isDarwin [ + cctools + darwin.sigtool + ]; + + enableParallelBuilding = false; + + dotnet-sdk = dotnetCorePackages.dotnet_10.sdk; + dotnet-runtime = dotnetCorePackages.dotnet_10.runtime; + + nugetDeps = ./deps.json; + + runtimeDeps = [ + libX11 + libgdiplus + SDL2_mixer + openal + libsoundio + sndio + vulkan-loader + ffmpeg + + # Avalonia UI + glew + libICE + libSM + libXcursor + libXext + libXi + libXrandr + gtk3 + + # Headless executable + libGL + SDL2 + ] + ++ lib.optional (!stdenv.hostPlatform.isDarwin) [ + udev + pulseaudio + ] + ++ lib.optional stdenv.hostPlatform.isDarwin [ moltenvk ]; + + projectFile = "Ryujinx.sln"; + testProjectFile = "src/Ryujinx.Tests/Ryujinx.Tests.csproj"; + + # Tests on Darwin currently fail because of Ryujinx.Tests.Unicorn + doCheck = !stdenv.hostPlatform.isDarwin; + + dotnetFlags = [ + "/p:ExtraDefineConstants=DISABLE_UPDATER%2CFORCE_EXTERNAL_BASE_DIR" + ]; + + executables = [ + "Ryujinx" + ]; + + makeWrapperArgs = lib.optional stdenv.hostPlatform.isLinux [ + # Without this Ryujinx fails to start on wayland. See https://github.com/Ryujinx/Ryujinx/issues/2714 + "--set SDL_VIDEODRIVER x11" + ]; + + preInstall = lib.optionalString stdenv.hostPlatform.isLinux '' + # workaround for https://github.com/Ryujinx/Ryujinx/issues/2349 + mkdir -p $out/lib/sndio-6 + ln -s ${sndio}/lib/libsndio.so $out/lib/sndio-6/libsndio.so.6 + ''; + + preFixup = '' + ${lib.optionalString stdenv.hostPlatform.isLinux '' + mkdir -p $out/share/{applications,icons/hicolor/scalable/apps,mime/packages} + + pushd ${src}/distribution/linux + + install -D ./Ryujinx.desktop $out/share/applications/Ryujinx.desktop + install -D ./Ryujinx.sh $out/bin/Ryujinx.sh + install -D ./mime/Ryujinx.xml $out/share/mime/packages/Ryujinx.xml + install -D ../misc/Logo.svg $out/share/icons/hicolor/scalable/apps/Ryujinx.svg + + popd + ''} + + # Don't make a softlink on OSX because of its case insensitivity + ${lib.optionalString (!stdenv.hostPlatform.isDarwin) "ln -s $out/bin/Ryujinx $out/bin/ryujinx"} + ''; + + passthru.updateScript = ./updater.sh; + + meta = { + homepage = "https://ryujinx.app"; + changelog = "https://git.ryujinx.app/ryubing/ryujinx/-/wikis/changelog"; + description = "Experimental Nintendo Switch Emulator written in C# (community fork of Ryujinx)"; + longDescription = '' + Ryujinx is an open-source Nintendo Switch emulator, created by gdkchan, + written in C#. This emulator aims at providing excellent accuracy and + performance, a user-friendly interface and consistent builds. It was + written from scratch and development on the project began in September + 2017. The project has since been abandoned on October 1st 2024 and QoL + updates are now managed under a fork. + ''; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ + jk + artemist + willow + ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + ]; + mainProgram = "Ryujinx"; + }; +} + diff --git a/pkgs/ryubing-canary/deps.json b/pkgs/ryubing-canary/deps.json new file mode 100644 index 0000000..52bf785 --- /dev/null +++ b/pkgs/ryubing-canary/deps.json @@ -0,0 +1,793 @@ +[ + { + "pname": "Avalonia", + "version": "11.3.12", + "hash": "sha256-T2y8aoKUSfXqmV2RL1QStytzJkc/SZYfIdJihB5UWR0=" + }, + { + "pname": "Avalonia.Angle.Windows.Natives", + "version": "2.1.25547.20250602", + "hash": "sha256-LE/lENAHptmz6t3T/AoJwnhpda+xs7PqriNGzdcfg8M=" + }, + { + "pname": "Avalonia.BuildServices", + "version": "11.3.2", + "hash": "sha256-6wx06tjSKWQOlX2czdp6Wh0nuwVapx5qf/s8Qj5we40=" + }, + { + "pname": "Avalonia.Controls.ColorPicker", + "version": "11.3.10", + "hash": "sha256-d8VTsT6yYAa8uZAodX7SWgf4+izVHrP/hy/pDpT91Wk=" + }, + { + "pname": "Avalonia.Controls.ColorPicker", + "version": "11.3.12", + "hash": "sha256-zNpmfOTfw+gKZp8VPpfHe2hjqhrRmExf7lxqLf5OvDg=" + }, + { + "pname": "Avalonia.Controls.DataGrid", + "version": "11.3.12", + "hash": "sha256-xuAL5FOvonyaY9CwEhjtMnurPcA0lYe0dyLLK0GEzd8=" + }, + { + "pname": "Avalonia.Desktop", + "version": "11.3.12", + "hash": "sha256-IY6TkpVh0GiCkKbestdwH8KEJ0Embxy+JYe7lww0xBA=" + }, + { + "pname": "Avalonia.Diagnostics", + "version": "11.3.12", + "hash": "sha256-iDH6DjRKqm4YLXBq2JGg9IkkEGm3Rq1FQWyr/L+VaVA=" + }, + { + "pname": "Avalonia.FreeDesktop", + "version": "11.3.12", + "hash": "sha256-NTcYVHn13lFQjTNezmpmPGjxsBzryXorK0K6hl4ZZto=" + }, + { + "pname": "Avalonia.Markup.Xaml.Loader", + "version": "11.3.12", + "hash": "sha256-Ch2G7HQcj50dkr2fw1PhB9SPctUVdnhhKckj42YFykY=" + }, + { + "pname": "Avalonia.Native", + "version": "11.3.12", + "hash": "sha256-1ujLmYaL1zTgtlsNerBDtTuoaJX7c7HukNLJIalrB4Q=" + }, + { + "pname": "Avalonia.Remote.Protocol", + "version": "11.3.12", + "hash": "sha256-dF93nP1Cd7ZdzrO7ScGHchxYxCjWN45AjiqiO1J+cmU=" + }, + { + "pname": "Avalonia.Skia", + "version": "11.3.10", + "hash": "sha256-XJXyK19ow9mvcssdmjPvh8zyh4VExcVEoiIauqPNC5s=" + }, + { + "pname": "Avalonia.Skia", + "version": "11.3.12", + "hash": "sha256-gRMjH7igRIm22zQV0WxtwFHe8AiMTcaPlR0sC5lJy+w=" + }, + { + "pname": "Avalonia.Skia", + "version": "11.3.9", + "hash": "sha256-KCL1LNUd2i+50vQpDgfI+aMkIBUWtxExyuc43QIK21o=" + }, + { + "pname": "Avalonia.Themes.Simple", + "version": "11.3.12", + "hash": "sha256-EIuAcUmoL7/y4lUfdSg120/l/v3zQytC2rfr0b6jKiM=" + }, + { + "pname": "Avalonia.Win32", + "version": "11.3.12", + "hash": "sha256-haIKvJ1SD17+EUJHILoFJMy+WJJtXr9I+ZYMFtwEuTc=" + }, + { + "pname": "Avalonia.X11", + "version": "11.3.12", + "hash": "sha256-SEc0GaZTh1eGNFWHT6lGiN6LD0qE+ubTK7Efl0H/Q2w=" + }, + { + "pname": "CommandLineParser", + "version": "2.9.1", + "hash": "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo=" + }, + { + "pname": "CommunityToolkit.Mvvm", + "version": "8.4.0", + "hash": "sha256-a0D550q+ffreU9Z+kQPdzJYPNaj1UjgyPofLzUg02ZI=" + }, + { + "pname": "Concentus", + "version": "2.2.2", + "hash": "sha256-9If4kL72V1evHOz0IONX8ASIy/rAtAm6RhzLzu+BSB8=" + }, + { + "pname": "csFastFloat", + "version": "4.1.5", + "hash": "sha256-dEbMPu/EmsRodI20P15F38QInil0IPcKE03akYp8tBY=" + }, + { + "pname": "DiscordRichPresence", + "version": "1.6.1.70", + "hash": "sha256-uXTNIWfZU7Gf/JpXQ5ufKA3SQdXYSkg3yLm5yCrBDd8=" + }, + { + "pname": "DynamicData", + "version": "9.4.1", + "hash": "sha256-CX4NQj2LTk/8f4xDE5rUVBsqcY74H/1qUHFTrVX+9/0=" + }, + { + "pname": "ExCSS", + "version": "4.3.1", + "hash": "sha256-nNn5+YEaqKSULhtDsImNEyndU/MHna7VpZNUExmo80o=" + }, + { + "pname": "FluentAvaloniaUI", + "version": "2.5.0", + "hash": "sha256-AC+IlESkbom+qxp6p/gYjLi5rAIBlbpln2DO2xhhXmc=" + }, + { + "pname": "FSharp.Core", + "version": "7.0.200", + "hash": "sha256-680VgvYbZbztPQosO17r5y8vxg/Y/4Vmr5K3iLIJKMo=" + }, + { + "pname": "Gommon", + "version": "2.8.0.1", + "hash": "sha256-c3a/43OJaL1glrsjdlyj9D/ooYpNKpYkn1lMKWxC4uE=" + }, + { + "pname": "HarfBuzzSharp", + "version": "8.3.1.1", + "hash": "sha256-614yv6bK9ynhdUnvW4wIkgpBe2sqTh28U9cDZzdhPc0=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.Linux", + "version": "8.3.1.1", + "hash": "sha256-sBbez6fc9axVcsBbIHbpQh/MM5NHlMJgSu6FyuZzVyU=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.macOS", + "version": "8.3.1.1", + "hash": "sha256-hK20KbX2OpewIO5qG5gWw5Ih6GoLcIDgFOqCJIjXR/Q=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.WebAssembly", + "version": "8.3.1.1", + "hash": "sha256-mLKoLqI47ZHXqTMLwP1UCm7faDptUfQukNvdq6w/xxw=" + }, + { + "pname": "HarfBuzzSharp.NativeAssets.Win32", + "version": "8.3.1.1", + "hash": "sha256-Um4iwLdz9XtaDSAsthNZdev6dMiy7OBoHOrorMrMYyo=" + }, + { + "pname": "Humanizer", + "version": "2.14.1", + "hash": "sha256-1wGwf5KAmDeiH0Dz8KcTdZw+UMkiNsjKOIOt/VJnnqE=" + }, + { + "pname": "Humanizer.Core", + "version": "2.14.1", + "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o=" + }, + { + "pname": "Humanizer.Core.af", + "version": "2.14.1", + "hash": "sha256-8CCgI7OweSa53cZWZBXQ8a7VVt/NPP16zHVBZvzU9KQ=" + }, + { + "pname": "Humanizer.Core.ar", + "version": "2.14.1", + "hash": "sha256-JRoP+brQgYBZI8OccH/jaM1Z482ZWBiqU2XL3KsIPw8=" + }, + { + "pname": "Humanizer.Core.az", + "version": "2.14.1", + "hash": "sha256-ubwkbes9zrrisuXTcT4ZgOAiFsUieC6OLd4pgzxsE40=" + }, + { + "pname": "Humanizer.Core.bg", + "version": "2.14.1", + "hash": "sha256-Xv6DP1xxxGVUfP44TZasWpxgQ/DkriljvmIMtHf+nGk=" + }, + { + "pname": "Humanizer.Core.bn-BD", + "version": "2.14.1", + "hash": "sha256-6JpReIc3fkExvJIXzk6fUw56wJ78aTEg1dWQ6o+dQow=" + }, + { + "pname": "Humanizer.Core.cs", + "version": "2.14.1", + "hash": "sha256-MGL86KxSbz0PkDo9+NRj6h1fDjPZXlxAtYNf0Zreg/4=" + }, + { + "pname": "Humanizer.Core.da", + "version": "2.14.1", + "hash": "sha256-Gpw8kJbgz0KQS2mGY5tmrHqpgUO4abD7dSKIy//ONYM=" + }, + { + "pname": "Humanizer.Core.de", + "version": "2.14.1", + "hash": "sha256-Eswv8aEQoxI9MZr2CvWtBUn5X9JRZTWQjRzHJkGj80g=" + }, + { + "pname": "Humanizer.Core.el", + "version": "2.14.1", + "hash": "sha256-wCK2Uy/AV6FxPUSUM0NMbV14pAP+ss25AaVAHMQIeJA=" + }, + { + "pname": "Humanizer.Core.es", + "version": "2.14.1", + "hash": "sha256-iEHiQXKwg0ABDxh//HSrzwaVOlilQBFI96+GYzzTMwQ=" + }, + { + "pname": "Humanizer.Core.fa", + "version": "2.14.1", + "hash": "sha256-2Js7k3nvwJvxAjq3yoLn7PUY2S8+vXfgESwU4SbvjaA=" + }, + { + "pname": "Humanizer.Core.fi-FI", + "version": "2.14.1", + "hash": "sha256-jOWo43r3dhiBsV9cCoDfqK/YqWj5LejZsnfkG6mlkpA=" + }, + { + "pname": "Humanizer.Core.fr", + "version": "2.14.1", + "hash": "sha256-WCbA+f4B3g/ml7KrkHkzpU2Fj38HtWc/ujoVY5F3lk4=" + }, + { + "pname": "Humanizer.Core.fr-BE", + "version": "2.14.1", + "hash": "sha256-GydVmoEy+lwEQ1nM39QXSRhYNchqM47p7qhUEimN4Cw=" + }, + { + "pname": "Humanizer.Core.he", + "version": "2.14.1", + "hash": "sha256-MMf3qjJ+yzxjMxOR7wMWf+eErxWLqpsdWKFhjNCOsyM=" + }, + { + "pname": "Humanizer.Core.hr", + "version": "2.14.1", + "hash": "sha256-kBv2I9ns6L6D4XfXfyZS1VM6+YwF4yUkCmCA5zqvsok=" + }, + { + "pname": "Humanizer.Core.hu", + "version": "2.14.1", + "hash": "sha256-vRje+kxqOsl1JCXAE0yDKvauUumzuEhNcnhNsdIdgVM=" + }, + { + "pname": "Humanizer.Core.hy", + "version": "2.14.1", + "hash": "sha256-UL7PsK4msT5c96lk70/bVAxN63B71l8VOFtvuJQH9a0=" + }, + { + "pname": "Humanizer.Core.id", + "version": "2.14.1", + "hash": "sha256-nIl64gCuZh4D527qI2hfQRvzt1mTJUCDGMIZwpS3C/A=" + }, + { + "pname": "Humanizer.Core.is", + "version": "2.14.1", + "hash": "sha256-38vUQ1aVtlhK15kP9ZlDO0Nl0DcOA5iHx6F2SPN1gYM=" + }, + { + "pname": "Humanizer.Core.it", + "version": "2.14.1", + "hash": "sha256-4ne0VRNi9OAj3bGCQgCy1BNYKMizoHykJ/lchmCsWdc=" + }, + { + "pname": "Humanizer.Core.ja", + "version": "2.14.1", + "hash": "sha256-oAilMM8J6LumV6qv3gSIBNTm7u2L4vV38cQXtME3PhM=" + }, + { + "pname": "Humanizer.Core.ko-KR", + "version": "2.14.1", + "hash": "sha256-b70HQl2IWVPATtaYGDyJ+Z6ioPtrM53vXzfTCHYgxpQ=" + }, + { + "pname": "Humanizer.Core.ku", + "version": "2.14.1", + "hash": "sha256-8LiEH7MaapMtkHFMj7Y3pG+g0QYuIa5gD3VR9nYQn+k=" + }, + { + "pname": "Humanizer.Core.lv", + "version": "2.14.1", + "hash": "sha256-zyCsE5cD++u5shNIqCQUd+66FkUWOl+NfFrs2JduCaQ=" + }, + { + "pname": "Humanizer.Core.ms-MY", + "version": "2.14.1", + "hash": "sha256-pSdZLUi9oWo78nBh2DJunPhDR7THdZSZP0msCVbPsrY=" + }, + { + "pname": "Humanizer.Core.mt", + "version": "2.14.1", + "hash": "sha256-mkX2reEvNpx9w6gtZw+6bkrnj3Di1qgVDMr9q0IeKCw=" + }, + { + "pname": "Humanizer.Core.nb", + "version": "2.14.1", + "hash": "sha256-QvYJHqjO/SrelWYgtm8Sc7axs7J8wbJE+GbTgVw5LYs=" + }, + { + "pname": "Humanizer.Core.nb-NO", + "version": "2.14.1", + "hash": "sha256-YW8y2XkmHjwqf2fztNB3rsn3+CgslF1TclITwp0fA9g=" + }, + { + "pname": "Humanizer.Core.nl", + "version": "2.14.1", + "hash": "sha256-bQM7aXNQMBY+65NfMVQz/xYz9Ad2JC+ryXoB4lcYgmA=" + }, + { + "pname": "Humanizer.Core.pl", + "version": "2.14.1", + "hash": "sha256-IrPxHI4uQvBeMM9/8PaNueKwVkbN+1zFQlNWRjNfXEA=" + }, + { + "pname": "Humanizer.Core.pt", + "version": "2.14.1", + "hash": "sha256-XrlC15HNJFmDwLpHIUHb3Bec9A79msQCRB9Dvz8w4l0=" + }, + { + "pname": "Humanizer.Core.ro", + "version": "2.14.1", + "hash": "sha256-llXtfq4Tr5V2Q4dVD7J0IKITtpiWrFs50DAtJhcSuRI=" + }, + { + "pname": "Humanizer.Core.ru", + "version": "2.14.1", + "hash": "sha256-lD0dB3mkbFfGExwVWZk6fv24MyQQ8Cdv5OrleuZeChg=" + }, + { + "pname": "Humanizer.Core.sk", + "version": "2.14.1", + "hash": "sha256-EmyE+wssZwY6tAuEiFXGn5/yzVMZe7QEuTjOcByOXaA=" + }, + { + "pname": "Humanizer.Core.sl", + "version": "2.14.1", + "hash": "sha256-sWWxh7KZ8Y3Ps6GbBOHbU2GMsNZfkM+BOnUChf3fz4s=" + }, + { + "pname": "Humanizer.Core.sr", + "version": "2.14.1", + "hash": "sha256-/bA3LULRFn5WYmCscr5R5vaFRjeHC0xjNiF7PXEJ8r0=" + }, + { + "pname": "Humanizer.Core.sr-Latn", + "version": "2.14.1", + "hash": "sha256-43+o6oj0UNRJKiFoh57MGPSzlsWAq0eRtzlCrewDmVM=" + }, + { + "pname": "Humanizer.Core.sv", + "version": "2.14.1", + "hash": "sha256-9lXrHveKDs1y/W3Qxd+MVcohhKEU7zNPx21GBVPp/rA=" + }, + { + "pname": "Humanizer.Core.th-TH", + "version": "2.14.1", + "hash": "sha256-ldCsXINSvL2xom0SCtVQy+qX1IN5//EUoyIOwXiJ3k8=" + }, + { + "pname": "Humanizer.Core.tr", + "version": "2.14.1", + "hash": "sha256-VZnO1vMXiR7egKEKJ6lBsj7eNgxhFzakFWsYYRW4u2U=" + }, + { + "pname": "Humanizer.Core.uk", + "version": "2.14.1", + "hash": "sha256-rdvleUrKbj3c06A0O2MkgAZLtXLro9SPB1YqAGE1Vyg=" + }, + { + "pname": "Humanizer.Core.uz-Cyrl-UZ", + "version": "2.14.1", + "hash": "sha256-Qso1Iz9MTLs63x4F00kK31TZAN4AoFaFsuVzM+1z38k=" + }, + { + "pname": "Humanizer.Core.uz-Latn-UZ", + "version": "2.14.1", + "hash": "sha256-sVnkZTuEaHfMJIAZmSCqsspnKkYxK9eVBQZnAAqHNW4=" + }, + { + "pname": "Humanizer.Core.vi", + "version": "2.14.1", + "hash": "sha256-5wDt72+HdNN3mt/iJkxV9LaH13Jc1qr1vB4Lz8ahIPs=" + }, + { + "pname": "Humanizer.Core.zh-CN", + "version": "2.14.1", + "hash": "sha256-Z3qfFWyovcVT4Hqy51lgW2xGwyfI//Yfv90E0Liy1sw=" + }, + { + "pname": "Humanizer.Core.zh-Hans", + "version": "2.14.1", + "hash": "sha256-BTGkMEkQYJKRp858EU7hwNOdsHRT+w6vAMa6H8JIyX4=" + }, + { + "pname": "Humanizer.Core.zh-Hant", + "version": "2.14.1", + "hash": "sha256-N3D1z5aoGwAZ6+ZxrWMtXgacvQcgDG+aLrQQI9uysmM=" + }, + { + "pname": "MicroCom.Runtime", + "version": "0.11.0", + "hash": "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0=" + }, + { + "pname": "Microsoft.CodeAnalysis.Analyzers", + "version": "3.3.4", + "hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE=" + }, + { + "pname": "Microsoft.CodeAnalysis.Common", + "version": "4.9.2", + "hash": "sha256-QU/nyiJWpdPQGHBdaOEVc+AghnGHcKBFBX0oyhRZ9CQ=" + }, + { + "pname": "Microsoft.CodeAnalysis.CSharp", + "version": "4.9.2", + "hash": "sha256-j06Q4A9E65075SBXdXVCMRgeLxA63Rv1vxarydmmVAA=" + }, + { + "pname": "Microsoft.CodeCoverage", + "version": "17.9.0", + "hash": "sha256-OaGa4+jRPHs+T+p/oekm2Miluqfd2IX8Rt+BmUx8kr4=" + }, + { + "pname": "Microsoft.DotNet.PlatformAbstractions", + "version": "3.1.6", + "hash": "sha256-RfM2qXiqdiamPkXr4IDkNc0IZSF9iTZv4uou/E7zNS0=" + }, + { + "pname": "Microsoft.Extensions.DependencyModel", + "version": "8.0.0", + "hash": "sha256-qkCdwemqdZY/yIW5Xmh7Exv74XuE39T8aHGHCofoVgo=" + }, + { + "pname": "Microsoft.IdentityModel.Abstractions", + "version": "8.3.0", + "hash": "sha256-LSZ91DbPswCWibHNSGWC3Jh3KQwAthVaU3r7XQJyutM=" + }, + { + "pname": "Microsoft.IdentityModel.JsonWebTokens", + "version": "8.3.0", + "hash": "sha256-Hiiv10LSOMIt7KsQSsteJV4DFkLebHMYmoISn/pl2F8=" + }, + { + "pname": "Microsoft.IdentityModel.Logging", + "version": "8.3.0", + "hash": "sha256-0P14ilpV+9yp+nqZWI/ilkTnRas4pic8NjNVcYxuXWs=" + }, + { + "pname": "Microsoft.IdentityModel.Tokens", + "version": "8.3.0", + "hash": "sha256-+TzBeZH2Tgs0EMoU5QuCdOD/5V8xM7MHClX578AUIxw=" + }, + { + "pname": "Microsoft.IO.RecyclableMemoryStream", + "version": "3.0.1", + "hash": "sha256-unFg/5EcU/XKJbob4GtQC43Ydgi5VjeBGs7hfhj4EYo=" + }, + { + "pname": "Microsoft.NET.Test.Sdk", + "version": "17.9.0", + "hash": "sha256-q/1AJ7eNlk02wvN76qvjl2xBx5iJ+h5ssiE/4akLmtI=" + }, + { + "pname": "Microsoft.NETCore.Platforms", + "version": "1.1.0", + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" + }, + { + "pname": "Microsoft.TestPlatform.ObjectModel", + "version": "17.9.0", + "hash": "sha256-iiXUFzpvT8OWdzMj9FGJDqanwHx40s1TXVY9l3ii+s0=" + }, + { + "pname": "Microsoft.TestPlatform.TestHost", + "version": "17.9.0", + "hash": "sha256-1BZIY1z+C9TROgdTV/tq4zsPy7Q71GQksr/LoMKAzqU=" + }, + { + "pname": "MsgPack.Cli", + "version": "1.0.1", + "hash": "sha256-Gf0Ed9XHH4oFpJIkzhg/xhDVpenunSol65qa8IZeYrY=" + }, + { + "pname": "NetCoreServer", + "version": "8.0.7", + "hash": "sha256-RUYic8uAgJGdhUCrMJQULKlHB6xvw9H1lnNGU1axNZw=" + }, + { + "pname": "NETStandard.Library", + "version": "2.0.0", + "hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0=" + }, + { + "pname": "NETStandard.Library", + "version": "2.0.3", + "hash": "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo=" + }, + { + "pname": "Newtonsoft.Json", + "version": "13.0.1", + "hash": "sha256-K2tSVW4n4beRPzPu3rlVaBEMdGvWSv/3Q1fxaDh4Mjo=" + }, + { + "pname": "NUnit", + "version": "3.13.3", + "hash": "sha256-Zn+sJIF7ieNqu/t2RwJx6WPFb1jl9UuNHidb/Px0v3E=" + }, + { + "pname": "NUnit3TestAdapter", + "version": "4.1.0", + "hash": "sha256-nDPiYdTFulqozEJrujr8/cqjG7m15Vkd/Frqem0Jr/w=" + }, + { + "pname": "Open.NAT.Core", + "version": "2.1.0.5", + "hash": "sha256-LqG5L2APr11142fsZPQ3clk3tJfAYBMXi1rP0EM9zDg=" + }, + { + "pname": "OpenTK.Audio.OpenAL", + "version": "4.8.2", + "hash": "sha256-i5KRiTYTNMB4Y5Qd5xewaYrb9sBbnXMDu2QXbM3RCeU=" + }, + { + "pname": "OpenTK.Core", + "version": "4.8.2", + "hash": "sha256-59S4Vj13y8HtZT6RZTwO6ZZbk1GUNDcYx1rMdv5jr4I=" + }, + { + "pname": "OpenTK.Graphics", + "version": "4.8.2", + "hash": "sha256-DNpXqtM9Oj6wDGYSF2FD4A4ueWG892Wk6uGWffNspo0=" + }, + { + "pname": "OpenTK.Mathematics", + "version": "4.8.2", + "hash": "sha256-TPsts443n6iEajfH2EuYTKtubrWuTLiCrTB1F4FndIo=" + }, + { + "pname": "OpenTK.redist.glfw", + "version": "3.3.8.39", + "hash": "sha256-bg8bGfoDDqmZ/efLFVm8l5etQajIVvOcQ/Nv+yKD4Bc=" + }, + { + "pname": "OpenTK.Windowing.GraphicsLibraryFramework", + "version": "4.8.2", + "hash": "sha256-a1MGtU+27pBNns55g8mOsxXpZxfEr6M62zLkIkkJTIY=" + }, + { + "pname": "ppy.SDL3-CS", + "version": "2026.320.0", + "hash": "sha256-dK58LuY8DQgw3Wfnj/HPup7Hxa9r2QvT/GBJbpUQ874=" + }, + { + "pname": "Projektanker.Icons.Avalonia", + "version": "9.6.2", + "hash": "sha256-BMbZQ2Hj80Yxcx8mNZ8+A4fxyB/Sa0QhFX5gC6jAueA=" + }, + { + "pname": "Projektanker.Icons.Avalonia.FontAwesome", + "version": "9.6.2", + "hash": "sha256-GumFdzG2GPCxfAU47Qk8a0RI4IlSzSTmRFMJ5ZVFvDg=" + }, + { + "pname": "Projektanker.Icons.Avalonia.MaterialDesign", + "version": "9.6.2", + "hash": "sha256-CG4VZDafywR278XwZTosm0sYzJyQ6AGHEQiIDB9y81I=" + }, + { + "pname": "Ryujinx.Audio.OpenAL.Dependencies", + "version": "1.21.0.1", + "hash": "sha256-NHGzMcYduuYJjduIlf8M8zSQQuJcXAEaMNmKIqAgs3w=" + }, + { + "pname": "Ryujinx.Graphics.Nvdec.Dependencies.AllArch", + "version": "6.1.2-build3", + "hash": "sha256-Glhvv00ZbrbB+Z4PMSTsmiP14HZDonp611s1gXGuyqI=" + }, + { + "pname": "Ryujinx.Graphics.Vulkan.Dependencies.MoltenVK", + "version": "1.2.0", + "hash": "sha256-vdDw6YGoyQzv6ustyXP6v7YWUIKEXaZOyUKAaVbRauI=" + }, + { + "pname": "Ryujinx.LibHac", + "version": "0.21.0-alpha.129", + "hash": "sha256-vwpjCsMZayUAzaydzcO9ktEzNIYEmDpQbhswGx8O7no=", + "url": "https://git.ryujinx.app/api/packages/projects/nuget/package/ryujinx.libhac/0.21.0-alpha.129/ryujinx.libhac.0.21.0-alpha.129.nupkg" + }, + { + "pname": "Ryujinx.Systems.Update.Common", + "version": "2.0.6", + "hash": "sha256-2btWQmCwqJSxISN3N7HdRCbkfSAs4Ph+o8hT+GlySYk=" + }, + { + "pname": "Ryujinx.UpdateClient", + "version": "1.0.44", + "hash": "sha256-4lKA2mscjyiJZAQf0ixAdVmwzDWog+CTGIftOmC0xnk=" + }, + { + "pname": "securifybv.PropertyStore", + "version": "0.1.0", + "hash": "sha256-jTPT9E2LyElgJq4HMavkdwT8tA9uklnJv00mlIx66+g=" + }, + { + "pname": "securifybv.ShellLink", + "version": "0.1.0", + "hash": "sha256-Am+ZednCVJUDgB7TePyY3CTxKDQ6Lr8M8KiCVAJoouw=" + }, + { + "pname": "Sep", + "version": "0.11.1", + "hash": "sha256-GkDWF51QOIKUu55By5ya471KrwXvQbm98DOo/zV0Bew=" + }, + { + "pname": "shaderc.net", + "version": "0.1.0", + "hash": "sha256-+K7ObC9ucilwWY+Tlf9KcrAVoTFS65V6Di7JDWDSZTg=" + }, + { + "pname": "SharpCompress", + "version": "0.47.4", + "hash": "sha256-mH0R+al2GUomIYkieYudTmF1mAnIUiifQPTp13eUFg8=" + }, + { + "pname": "ShimSkiaSharp", + "version": "3.6.0", + "hash": "sha256-73Z5rWOt8MFXAvR1FmN8jIoZKNJafKpR75FyqqoS0gE=" + }, + { + "pname": "Silk.NET.Core", + "version": "2.22.0", + "hash": "sha256-1aBiBwifLel9aaGI97gxbvID/XKbFm1dpVv2zm0NSEc=" + }, + { + "pname": "Silk.NET.Vulkan", + "version": "2.22.0", + "hash": "sha256-TxCjv6Q35PrJTs0SkiE1srJNZf1yh9k98Gfx8DWSWjY=" + }, + { + "pname": "Silk.NET.Vulkan.Extensions.EXT", + "version": "2.22.0", + "hash": "sha256-spbTFm5wHbVZqMNvAih6wexeZs61B8kbX4sKYSe5Syk=" + }, + { + "pname": "Silk.NET.Vulkan.Extensions.KHR", + "version": "2.22.0", + "hash": "sha256-aXgS8UxYlfBIrxmoAOuy6Z3NZuV+ruSibQPvLO1wL/U=" + }, + { + "pname": "SkiaSharp", + "version": "2.88.9", + "hash": "sha256-jZ/4nVXYJtrz9SBf6sYc/s0FxS7ReIYM4kMkrhZS+24=" + }, + { + "pname": "SkiaSharp.NativeAssets.Linux", + "version": "2.88.9", + "hash": "sha256-mQ/oBaqRR71WfS66mJCvcc3uKW7CNEHoPN2JilDbw/A=" + }, + { + "pname": "SkiaSharp.NativeAssets.macOS", + "version": "2.88.9", + "hash": "sha256-qvGuAmjXGjGKMzOPBvP9VWRVOICSGb7aNVejU0lLe/g=" + }, + { + "pname": "SkiaSharp.NativeAssets.WebAssembly", + "version": "2.88.9", + "hash": "sha256-vgFL4Pdy3O1RKBp+T9N3W4nkH9yurZ0suo8u3gPmmhY=" + }, + { + "pname": "SkiaSharp.NativeAssets.Win32", + "version": "2.88.9", + "hash": "sha256-kP5XM5GgwHGfNJfe4T2yO5NIZtiF71Ddp0pd1vG5V/4=" + }, + { + "pname": "SPB", + "version": "0.0.4-build32", + "hash": "sha256-GUzbV5rLWtXTpiddYrKnWWLujG38vBDCO4xRStwAaDo=" + }, + { + "pname": "Svg.Controls.Avalonia", + "version": "11.3.9.4", + "hash": "sha256-VtT78D+HNZfwetSzYG+oDhzl4EZYcIlcq+59mPqyIGk=" + }, + { + "pname": "Svg.Controls.Skia.Avalonia", + "version": "11.3.9.4", + "hash": "sha256-q9mixdAKtgxHS+//lfD1kgOhcKs9sNoqs6OnT3WBte8=" + }, + { + "pname": "Svg.Custom", + "version": "3.6.0", + "hash": "sha256-caId1MZbsDR5kZYxiVUZfZJl6FLt1RbqSA46YZ2EXA4=" + }, + { + "pname": "Svg.Model", + "version": "3.6.0", + "hash": "sha256-iQMvX6UUu5REzUHBrPQcAVXP8KEzz8b5lratPaIEjbc=" + }, + { + "pname": "Svg.Skia", + "version": "3.6.0", + "hash": "sha256-USVPjpvV3FoMLoThAqz53IscTKw4oVIAyDkdo03Z6Do=" + }, + { + "pname": "System.Buffers", + "version": "4.5.1", + "hash": "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI=" + }, + { + "pname": "System.CodeDom", + "version": "4.4.0", + "hash": "sha256-L1xyspJ8pDJNVPYKl+FMGf4Zwm0tlqtAyQCNW6pT6/0=" + }, + { + "pname": "System.Collections.Immutable", + "version": "8.0.0", + "hash": "sha256-F7OVjKNwpqbUh8lTidbqJWYi476nsq9n+6k0+QVRo3w=" + }, + { + "pname": "System.IO.Hashing", + "version": "9.0.2", + "hash": "sha256-CI1z3rCDA2XnYE7hA1Hh6+rPkdIRAcswCXu/Pbaavck=" + }, + { + "pname": "System.Memory", + "version": "4.5.5", + "hash": "sha256-EPQ9o1Kin7KzGI5O3U3PUQAZTItSbk9h/i4rViN3WiI=" + }, + { + "pname": "System.Numerics.Vectors", + "version": "4.4.0", + "hash": "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U=" + }, + { + "pname": "System.Reactive", + "version": "6.0.1", + "hash": "sha256-Lo5UMqp8DsbVSUxa2UpClR1GoYzqQQcSxkfyFqB/d4Q=" + }, + { + "pname": "System.Reflection.Metadata", + "version": "8.0.0", + "hash": "sha256-dQGC30JauIDWNWXMrSNOJncVa1umR1sijazYwUDdSIE=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "4.5.3", + "hash": "sha256-lnZMUqRO4RYRUeSO8HSJ9yBHqFHLVbmenwHWkIU20ak=" + }, + { + "pname": "System.Runtime.CompilerServices.Unsafe", + "version": "6.0.0", + "hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=" + }, + { + "pname": "System.Text.Encoding.CodePages", + "version": "8.0.0", + "hash": "sha256-fjCLQc1PRW0Ix5IZldg0XKv+J1DqPSfu9pjMyNBp7dE=" + }, + { + "pname": "System.Threading.Tasks.Extensions", + "version": "4.5.4", + "hash": "sha256-owSpY8wHlsUXn5xrfYAiu847L6fAKethlvYx97Ri1ng=" + }, + { + "pname": "Tmds.DBus.Protocol", + "version": "0.21.2", + "hash": "sha256-gaK/5aAummyin6ptnhaJbnA0ih4+2xADrtrLfFbHwYI=" + }, + { + "pname": "UnicornEngine.Unicorn", + "version": "2.0.2-rc1-fb78016", + "hash": "sha256-NrJ4/o4FmCt2zoB1fWAzqdonvpYhTFsWwh3h0lxZg+Q=" + } +] diff --git a/pkgs/ryubing-canary/updater.sh b/pkgs/ryubing-canary/updater.sh new file mode 100755 index 0000000..e415655 --- /dev/null +++ b/pkgs/ryubing-canary/updater.sh @@ -0,0 +1,37 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p coreutils gnused curl common-updater-scripts nix-prefetch-git jq +# shellcheck shell=bash +set -euo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" + +# If NEW_VERSION or COMMIT are not set, fetch the latest version +if [ -z ${NEW_VERSION+x} ] && [ -z ${COMMIT+x} ]; then + RELEASE_DATA=$(curl -s "https://git.ryujinx.app/api/v4/projects/1/repository/tags?order_by=updated&sort=desc") + if [ -z "$RELEASE_DATA" ] || [[ $RELEASE_DATA =~ "imposed ratelimits" ]]; then + echo "failed to get release job data" >&2 + exit 1 + fi + NEW_VERSION=$(echo "$RELEASE_DATA" | jq -r '[.[] | select(.name | startswith("Canary") | not)][0].name') +fi + +OLD_VERSION="$(sed -nE 's/\s*version = "(.*)".*/\1/p' ./package.nix)" + +echo "comparing versions $OLD_VERSION -> $NEW_VERSION" +if [[ "$OLD_VERSION" == "$NEW_VERSION" ]]; then + echo "Already up to date!" + if [[ "${1-default}" != "--deps-only" ]]; then + exit 0 + fi +fi + +cd ../../../.. + +if [[ "${1-default}" != "--deps-only" ]]; then + SHA="$(nix-prefetch-git https://git.ryujinx.app/ryubing/ryujinx --rev "$NEW_VERSION" --quiet | jq -r '.sha256')" + SRI=$(nix --experimental-features nix-command hash to-sri "sha256:$SHA") + # update-source-version ryubing-canary "$NEW_VERSION" "$SRI" +fi + +echo "building Nuget lockfile" + +eval "$(nix-build -A ryubing-canary.fetch-deps --no-out-link)"