Add Ryujinx

This commit is contained in:
Mary 2022-03-04 21:10:47 +01:00
parent 746ea89cc4
commit c1876ccfa0
7 changed files with 1428 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.flatpak-builder

3
flathub.json Normal file
View file

@ -0,0 +1,3 @@
{
"only-arches": ["x86_64"]
}

1269
nuget_sources.json Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.ryujinx.Ryujinx</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>MIT</project_license>
<name>Ryujinx</name>
<developer_name>Ryujinx team</developer_name>
<summary>A Nintendo Switch Emulator</summary>
<categories>
<category>Emulator</category>
<category>Game</category>
</categories>
<description>
<p>Ryujinx is an open-source Nintendo Switch emulator written in C#</p>
<p>This emulator aims at providing excellent accuracy and performance, a user-friendly interface, and consistent builds.</p>
</description>
<launchable type="desktop-id">org.ryujinx.Ryujinx.desktop</launchable>
<provides>
<binary>Ryujinx</binary>
<mediatype>application/x-nx-nca</mediatype>
<mediatype>application/x-nx-nro</mediatype>
<mediatype>application/x-nx-nso</mediatype>
<mediatype>application/x-nx-nsp</mediatype>
<mediatype>application/x-nx-xci</mediatype>
</provides>
<url type="homepage">https://ryujinx.org/</url>
<url type="bugtracker">https://github.com/Ryujinx/Ryujinx/issues</url>
<url type="faq">https://github.com/Ryujinx/Ryujinx/wiki/Frequently-Asked-Questions</url>
<url type="donation">https://www.patreon.com/ryujinx</url>
<url type="help">https://github.com/Ryujinx/Ryujinx/wiki/Ryujinx-Setup-%26-Configuration-Guide</url>
<screenshots>
<screenshot type="default">
<caption>Main screen</caption>
<image>https://raw.githubusercontent.com/Ryujinx/Ryujinx-Website/master/static/public/shell_fullsize.png</image>
</screenshot>
</screenshots>
<releases>
<release version="1.1.0"/>
</releases>
<content_rating type="oars-1.1"/>
<requires>
<kernel version="4.1" compare="ge">Linux</kernel>
<memory>8192</memory>
</requires>
<supports>
<control>keyboard</control>
<control>pointing</control>
<control>gamepad</control>
<control>tablet</control>
</supports>
<recommends>
<control>gamepad</control>
</recommends>
<!-- For Gnome Software (https://gitlab.gnome.org/GNOME/gnome-software/-/blob/main/doc/kudos.md) -->
<kudos>
<kudo>HiDpiIcon</kudo>
<kudo>ModernToolkit</kudo>
</kudos>
</component>

29
org.ryujinx.Ryujinx.yml Normal file
View file

@ -0,0 +1,29 @@
app-id: org.ryujinx.Ryujinx
runtime: org.freedesktop.Platform
runtime-version: '21.08'
sdk: org.freedesktop.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.dotnet6
add-extensions:
org.freedesktop.Platform.ffmpeg-full:
version: '21.08'
directory: lib/ffmpeg
add-ld-path: .
finish-args:
# IPC access (required by X11)
- --share=ipc
# X11 access (TODO: Allows Wayland when EGL is supported correctly on SPB side)
- --socket=x11
# OpenGL and hidraw (SDL2 controllers) access
- --device=all
# PulseAudio access
- --socket=pulseaudio
# Network access (Used by Amiibo API and emulated games)
- --share=network
# Allows standard filesystem access (Users can load emulated games but also unpack their content)
- --filesystem=host
- --filesystem=xdg-run/app/com.discordapp.Discord:create
rename-icon: ryujinx
command: ryujinx-wrapper
modules:
- ryujinx.yml

7
ryujinx-wrapper Normal file
View file

@ -0,0 +1,7 @@
#!/bin/sh
for i in {0..9}; do
test -S $XDG_RUNTIME_DIR/discord-ipc-$i || ln -sf {app/com.discordapp.Discord,$XDG_RUNTIME_DIR}/discord-ipc-$i;
done
Ryujinx $@

60
ryujinx.yml Normal file
View file

@ -0,0 +1,60 @@
name: Ryujinx
sources:
- nuget_sources.json
- type: git
url: https://github.com/Ryujinx/Ryujinx.git
commit: ac21abbb9d23432879b1026eb5bc48ad3d4583d8
- type: file
path: ryujinx-wrapper
- type: file
path: org.ryujinx.Ryujinx.appdata.xml
buildsystem: simple
build-options:
append-path: /usr/lib/sdk/dotnet6/bin
append-ld-library-path: /usr/lib/sdk/dotnet6/lib
arch:
x86_64:
env:
RUNTIME: linux-x64
env:
PKG_CONFIG_PATH: /app/lib/pkgconfig:/app/share/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib/sdk/dotnet6/lib/pkgconfig
DOTNET_CLI_TELEMETRY_OPTOUT: 'true'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 'true'
RYUJINX_VERSION: "1.1.56"
RYUJINX_TARGET_RELEASE_CHANNEL_OWNER: "flathub"
RYUJINX_TARGET_RELEASE_CHANNEL_REPO: "org.ryujinx.Ryujinx"
RYUJINX_TARGET_RELEASE_CHANNEL_NAME: "master"
build-commands:
- |
export RYUJINX_GIT_SHORT_HASH=$(git rev-parse --short HEAD)
sed -r --in-place "s/\%\%RYUJINX_BUILD_VERSION\%\%/$RYUJINX_VERSION/g;" Ryujinx.Common/ReleaseInformations.cs
sed -r --in-place "s/\%\%RYUJINX_BUILD_GIT_HASH\%\%/$RYUJINX_GIT_SHORT_HASH/g;" Ryujinx.Common/ReleaseInformations.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_NAME\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_NAME/g;" Ryujinx.Common/ReleaseInformations.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_OWNER\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_OWNER/g;" Ryujinx.Common/ReleaseInformations.cs
sed -r --in-place "s/\%\%RYUJINX_TARGET_RELEASE_CHANNEL_REPO\%\%/$RYUJINX_TARGET_RELEASE_CHANNEL_REPO/g;" Ryujinx.Common/ReleaseInformations.cs
mkdir -p /app/bin
dotnet publish -c Release -r $RUNTIME /p:DebugType=embedded Ryujinx /p:Version=$RYUJINX_VERSION /p:SourceRevisionId=$RYUJINX_GIT_SHORT_HASH /p:ExtraDefineConstants=DISABLE_UPDATER --self-contained --source nuget-sources
cp -r --remove-destination /run/build/Ryujinx/Ryujinx/bin/Release/net6.0/$RUNTIME/publish/* /app/bin/
mkdir -p /app/lib/ffmpeg
ln -s /usr/lib/x86_64-linux-gnu/libX11.so.6 /app/lib/libX11.so
post-install:
- install -Dm644 $FLATPAK_ID.appdata.xml /app/share/metainfo/$FLATPAK_ID.appdata.xml
- install -Dm755 ryujinx-wrapper /app/bin/ryujinx-wrapper
- |
install -Dm644 distribution/linux/ryujinx-logo.svg /app/share/icons/hicolor/scalable/apps/ryujinx.svg
icon_in="distribution/linux/ryujinx-logo.svg";
icon_out="ryujinx.png";
for s in {16,22,24,32,36,48,64,72,96,128,192,256,512}; do
[[ ! -f "/app/share/icons/hicolor/${s}x${s}/apps/${icon_out}" ]] || continue;
rsvg-convert "${icon_in}" -w "${s}" -h "${s}" -a -f png -o "${icon_out}";
install -p -D -m 0644 "${icon_out}" -t "/app/share/icons/hicolor/${s}x${s}/apps/";
done;
gtk-update-icon-cache --force --ignore-theme-index /app/share/icons/hicolor
- |
mkdir -p /app/share/mime/packages/
install -m644 distribution/linux/ryujinx-mime.xml /app/share/mime/packages/$FLATPAK_ID.mime.xml
update-mime-database /app/share/mime
- |
install -Dm644 distribution/linux/ryujinx.desktop /app/share/applications/$FLATPAK_ID.desktop
desktop-file-edit --set-key="Exec" --set-value="ryujinx-wrapper %f" /app/share/applications/$FLATPAK_ID.desktop