From 7947164c2c5fad5cb285484cb9f4ebd641e3ac4e Mon Sep 17 00:00:00 2001 From: 3AvisD Date: Mon, 19 Oct 2026 22:35:19 -0600 Subject: [PATCH 1/6] darling-lol: use an original project mark instead of the game logo The bundled darling-lol.svg/png are the League of Legends logo, a Riot Games trademark, used as the project icon. The README already states that the project is not affiliated with or endorsed by Riot Games, so the icon should not be someone else's mark. Replace both files with an original D monogram. Same file names, so flake.nix and the desktop entry keep working. The mark is provisional and easy to swap for a final one. No functional changes. From 5cf12f4f0698f38ebe3ca7617a16940b2071c6e8 Mon Sep 17 00:00:00 2001 From: 3AvisD Date: Mon, 19 Oct 2026 22:47:59 -0600 Subject: [PATCH 2/6] README, NOTICE: add trademark notice and remove the gameplay clip Consolidate the non-affiliation note into a dedicated Trademarks section, replace the embedded gameplay video with a pointer to the status document, and reword the takedown note as a continuity statement. Describe the compatibility tools as referring to public API names and constants. --- NOTICE.md | 8 +++++++- README.md | 13 ++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/NOTICE.md b/NOTICE.md index 0332431..f9cedba 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -4,4 +4,10 @@ The manifest points to public upstream source repositories. This repository includes source differences and authored integration/research tools, not a copy of the upstream runtime, Apple's SDK binaries or Riot's client/game assets. Build artifacts and local installs are excluded. -Some compatibility tools contain short instruction signatures or API names used to recognize the user's installed client. The client itself is not redistributed. Installation downloads from Riot's distribution service directly. +Some compatibility tools refer to public API names and constants of the user's installed client. The client itself is not redistributed. Installation downloads from Riot's distribution service directly. + +## Trademarks + +League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. +This project is an unofficial compatibility effort and is not affiliated with, endorsed by, or +sponsored by Riot Games. diff --git a/README.md b/README.md index 5be348c..5f34130 100644 --- a/README.md +++ b/README.md @@ -16,14 +16,14 @@ > > Even with all of that, you will probably still get permabanned. > -> **3. Takedown.** Riot may well shut this project down. If that happens, I will publish a fork of Darling containing only the changes made here (none of them breach anything), and release the small script as a gist or similar. +> **3. Continuity.** If this repository is discontinued, the patches remain available under their upstream licenses, and the original integration tooling remains available under GPL-3.0. > > **4. To Riot.** If you are reading this, it means a lot of people want to play your game on Linux and are disappointed that they currently can't. As with macOS for your other games (TFT, Valorant), it feels like Riot doesn't care about a part of its players who have been waiting the longest. If you want to fix this, make LoL Next compatible with Linux, either natively or through a layer like Proton. Yes, that includes your kernel anticheat: Epic Games did it with Easy Anti-Cheat. Follow the trend. This is the year of Linux, and people shouldn't be locked out of a platform or forced to dual boot for a single game. > Since Riot have heard of the repo if you want to contact me you can at darling-lolriot@proton.me (especially if you want to do an official or supported version of league of legends on linux) If someone else wants to contact me know that i'm open to jobs, part-time remote only as a employee and full time remote as a freelancer for a mission -https://github.com/user-attachments/assets/140df3e0-3790-46b6-bab5-578139b84a7c +A short manual ARAM run and the current compatibility status are documented in [docs/STATUS.md](docs/STATUS.md). Experimental source patches and tools for running the **macOS League of Legends client on x86-64 Linux through Darling**. @@ -140,6 +140,13 @@ docs/ setup, testing, status and licensing notes build/ local sources, outputs and rendered tools (ignored) ``` -Darling/upstream components retain their existing licenses; see [third-party notes](NOTICE.md). Original integration tooling is distributed under GPL-3.0; patches retain the licensing of their target files. This project is not affiliated with Riot Games. +Darling/upstream components retain their existing licenses; see [third-party notes](NOTICE.md). Original integration tooling is distributed under GPL-3.0; patches retain the licensing of their target files. + +## Trademarks + +League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. +This project is an unofficial compatibility effort and is not affiliated with, endorsed by, or +sponsored by Riot Games. No game client, game assets, or account data are distributed in this +repository. From 57660f168d3e3f8b90169a48380f5915949cbfc4 Mon Sep 17 00:00:00 2001 From: 3AvisD Date: Mon, 19 Oct 2026 22:47:59 -0600 Subject: [PATCH 3/6] flake.nix: mark the desktop entry and package as unofficial Keep the executable names and StartupWMClass; only the user-facing name, comment and descriptions change. --- flake.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index cb1b11f..8d418d8 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Darling League of Legends - experimental macOS LoL runner on Linux via Darling"; + description = "Unofficial Darling League of Legends - experimental macOS LoL runner on Linux via Darling"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; @@ -229,12 +229,12 @@ cat << 'DESKTOP_EOF' > $out/share/applications/darling-lol.desktop [Desktop Entry] Categories=Game; -Comment=Play League of Legends macOS client on Linux via Darling +Comment=Unofficial League of Legends macOS client compatibility layer for Linux via Darling Exec=darling-lol GenericName=MOBA Game Icon=darling-lol Keywords=League;LoL;Riot;Darling; -Name=League of Legends +Name=League of Legends (unofficial) StartupWMClass=RiotClientServices Terminal=true Type=Application @@ -245,7 +245,7 @@ DESKTOP_EOF ''; meta = with pkgs.lib; { - description = "Tooling and patches to run macOS League of Legends on Linux with Darling"; + description = "Unofficial tooling and patches to run macOS League of Legends on Linux with Darling"; homepage = "https://github.com/lucannez64/darling-lol"; license = licenses.gpl3Only; platforms = [ "x86_64-linux" ]; From 54edf6fca1800d4691acbf838f87d891a2e23db1 Mon Sep 17 00:00:00 2001 From: 3AvisD Date: Mon, 19 Oct 2026 22:47:59 -0600 Subject: [PATCH 4/6] patches, tools, docs: use neutral integrity-check wording and state the compatibility scope The patch comments and the Mach-O strings filter named an anti-cheat product. Use neutral wording; the patches still differ only in comments. The platform-identity document now says the overrides are for compatibility, not a bypass of anti-cheat, telemetry, licensing or platform controls. --- docs/PLATFORM_IDENTITY.md | 3 ++- patches/darling.patch | 4 ++-- patches/xnu.patch | 2 +- tools/analyze-macho.sh | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/PLATFORM_IDENTITY.md b/docs/PLATFORM_IDENTITY.md index 5f25849..f8be827 100644 --- a/docs/PLATFORM_IDENTITY.md +++ b/docs/PLATFORM_IDENTITY.md @@ -6,7 +6,8 @@ A prefix without saved identity files keeps the host-derived UUID and `DARLING-` serial; launching never generates an override. Import mode uses values supplied by the user. `--provision` generates synthetic identifiers; it does not issue authentic Apple identities or change CPU, GPU, or security -metadata. +metadata. The overrides are for application compatibility; they are not intended +to bypass anti-cheat, telemetry, licensing, or platform security controls. Preview an OpenCore `config.plist`, a flat GenSMBIOS JSON file, or an existing `darling-smbios.conf` without changing the selected prefix: diff --git a/patches/darling.patch b/patches/darling.patch index ade6461..e0d6b94 100644 --- a/patches/darling.patch +++ b/patches/darling.patch @@ -3326,8 +3326,8 @@ index 8b92b6c50..18a57e359 100644 + * (kAudioUnitErr_InvalidProperty) made it throw its audio graph away and build a new one in a loop, so it never played + * anything. Accepting it harmless: the unit plays on the default device anyway. + * -+ * Only the game process gets this. With the property accepted everywhere, the League client's Vanguard module went to its -+ * error state (MvgState 5, status -101) on every launch (2 of 2, 2026-10-11) and the client could not start a match; ++ * Only the game process gets this. With the property accepted everywhere, the League client's integrity module went to its ++ * error state (state 5, status -101) on every launch (2 of 2, 2026-10-11) and the client could not start a match; + * with the old behaviour it connected again (state 0). */ +static bool callerIsLeagueGame() +{ diff --git a/patches/xnu.patch b/patches/xnu.patch index a02f9cd..2c8f6e2 100644 --- a/patches/xnu.patch +++ b/patches/xnu.patch @@ -5051,7 +5051,7 @@ index b998456..c6281e6 100644 + * (/tmp/rclol-local-semaphores, the former opt-in switch, is now a no-op). While it was on by default in every + * process (2026-10-10 22:22-23:50) LeagueClient died ~85 s after start in 3 of 4 checked launches + * ("mach_msg_overwrite failed -9", then dserver_rpc_interrupt_enter -9: its RPC descriptor had become invalid) and -+ * the user saw Vanguard errors; that mechanism is not understood, so the clients keep the server path. With the ++ * the client logged integrity-check errors; that mechanism is not understood, so the clients keep the server path. With the + * lifetime fixes above the game ran two full matches with it (2026-10-14: the main thread's server waits fell from + * 1.36 to 0.10 ms per frame, 39 to 15 blocks per frame). /tmp/rclol-local-semaphores-all turns it on for every + * process (probe tests). Decided once per process and logged diff --git a/tools/analyze-macho.sh b/tools/analyze-macho.sh index 8f8dd1d..d9a8ed1 100755 --- a/tools/analyze-macho.sh +++ b/tools/analyze-macho.sh @@ -10,5 +10,5 @@ OBJDUMP="$(command -v llvm-objdump || true)" file "$BIN" | tee "$OUT/file.txt" [ -n "$OTOOL" ] && { "$OTOOL" -hv "$BIN" > "$OUT/headers.txt" 2>&1; "$OTOOL" -L "$BIN" > "$OUT/linked-libs.txt" 2>&1; echo "wrote headers + linked-libs"; } || echo "no otool/llvm-otool found" [ -n "$OBJDUMP" ] && "$OBJDUMP" --macho --dylibs-used "$BIN" > "$OUT/dylibs.txt" 2>&1 || true -strings -a "$BIN" | grep -iE "Metal|MTL|Vanguard|vgc|CEF|Chromium|RiotClient|NSApplication|LSOpen|CFBundle" | sort -u | head -100 | tee "$OUT/strings-of-interest.txt" +strings -a "$BIN" | grep -iE "Metal|MTL|CEF|Chromium|RiotClient|NSApplication|LSOpen|CFBundle" | sort -u | head -100 | tee "$OUT/strings-of-interest.txt" echo "done -> $OUT/" From 75da66c1ea2fceb70e9a4f75750bde449621fdde Mon Sep 17 00:00:00 2001 From: 3AvisD Date: Mon, 19 Oct 2026 23:06:47 -0600 Subject: [PATCH 5/6] docs: add scope and terminology guidance Add docs/COMPLIANCE.md with the project's compatibility scope: no DRM/anti-cheat circumvention, no third-party game assets, and neutral terminology for issues and PRs. Link it from README and NOTICE. --- NOTICE.md | 2 ++ README.md | 3 +++ docs/COMPLIANCE.md | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 docs/COMPLIANCE.md diff --git a/NOTICE.md b/NOTICE.md index f9cedba..759c3aa 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -11,3 +11,5 @@ Some compatibility tools refer to public API names and constants of the user's i League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. This project is an unofficial compatibility effort and is not affiliated with, endorsed by, or sponsored by Riot Games. + +See [compliance and terminology guidance](docs/COMPLIANCE.md) for scope and review expectations. diff --git a/README.md b/README.md index 5f34130..9176f73 100644 --- a/README.md +++ b/README.md @@ -149,4 +149,7 @@ This project is an unofficial compatibility effort and is not affiliated with, e sponsored by Riot Games. No game client, game assets, or account data are distributed in this repository. +See [compliance and terminology guidance](docs/COMPLIANCE.md) for the project's scope and +review expectations. + diff --git a/docs/COMPLIANCE.md b/docs/COMPLIANCE.md new file mode 100644 index 0000000..7fe57b1 --- /dev/null +++ b/docs/COMPLIANCE.md @@ -0,0 +1,49 @@ +# Scope and compliance guidance + +This project is an unofficial compatibility layer for running the macOS League of Legends +client on Linux through Darling. It is not affiliated with, endorsed by, or sponsored by Riot +Games, Inc. + +## Scope + +- The project is about compatibility: making the client run, render and behave correctly on + Linux. +- It does not aim to circumvent DRM, anti-cheat, licensing, telemetry, or other platform + security controls, and it does not distribute a game client, game assets, or account data. +- Do not describe or present the project as a tool for evading detection, preventing bans, + bypassing DRM, or defeating anti-cheat. Do not promise that an account will not be banned. + +## Terminology + +Prefer accurate compatibility language: + +| Prefer | Avoid | +|---|---| +| compatibility issue, client check, platform identity | detection vector, stealth, evasion, bypass | +| hardware/platform reporting | spoofing, telemetry leak | +| runtime/launcher fix | anti-cheat bypass | + +Technical facts can be described precisely without framing the work as evasion. If a change +touches a client check or a platform identity, say what it does and why it is needed for +compatibility. + +## Assets and third-party material + +- Do not add or link third-party game assets: logos, icons, fonts, screenshots, gameplay + audio/video, client files, game data, or account data. +- Project icons and artwork must be original. Forks must use their own name and icon; see the + trademark notice in `README.md` and `NOTICE.md`. +- Do not commit local prefixes, logs, tokens, captures, or compiled client/runtime binaries. + +## Pull requests and issues + +- Describe the compatibility problem and the fix. Avoid "stealth", "spoof", "evade", + "undetectable", or "unbannable" framing. +- Maintainers may ask for wording changes before merging. This is about keeping the project's + scope accurate, not about hiding technical details. +- Contributions that add third-party assets or present the project as a DRM/anti-cheat + circumvention tool are out of scope for this repository. + +## Note + +This document describes project scope and review expectations. It is not legal advice. From b4cdd19f1b430ebd6a66fa9930e707775abb2baf Mon Sep 17 00:00:00 2001 From: lucannez64 <58551020+lucannez64@users.noreply.github.com> Date: Tue, 20 Oct 2026 11:52:23 +0200 Subject: [PATCH 6/6] Fix Mach-O analysis with no matching strings --- tools/analyze-macho.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/analyze-macho.sh b/tools/analyze-macho.sh index d9a8ed1..22932fd 100755 --- a/tools/analyze-macho.sh +++ b/tools/analyze-macho.sh @@ -10,5 +10,5 @@ OBJDUMP="$(command -v llvm-objdump || true)" file "$BIN" | tee "$OUT/file.txt" [ -n "$OTOOL" ] && { "$OTOOL" -hv "$BIN" > "$OUT/headers.txt" 2>&1; "$OTOOL" -L "$BIN" > "$OUT/linked-libs.txt" 2>&1; echo "wrote headers + linked-libs"; } || echo "no otool/llvm-otool found" [ -n "$OBJDUMP" ] && "$OBJDUMP" --macho --dylibs-used "$BIN" > "$OUT/dylibs.txt" 2>&1 || true -strings -a "$BIN" | grep -iE "Metal|MTL|CEF|Chromium|RiotClient|NSApplication|LSOpen|CFBundle" | sort -u | head -100 | tee "$OUT/strings-of-interest.txt" +strings -a "$BIN" | { grep -iE "Metal|MTL|CEF|Chromium|RiotClient|NSApplication|LSOpen|CFBundle" || test "$?" -eq 1; } | sort -u | head -100 | tee "$OUT/strings-of-interest.txt" echo "done -> $OUT/"