%global debug_package %{nil} %global _lto_cflags %{nil} # The release tarball ships the aurora, borealis, and mod submodules as # empty directories, so each pinned commit is fetched as an extra source # and unpacked into place in %%prep. Everything else CMake needs (Dawn, # nod, Tracy, ImGui, ...) is fetched at configure time with pinned tags. %global aurora_commit 3227d76c60e1e782ca576610bce61c9e7744d8be %global borealis_commit 4ac5e7052a8c49a122f8d57f626b5c75c5ca6968 %global cosmetics_commit fd93491089fa95441789244f2b2fd22a451ecbcc %global randomizer_commit 1f24e81303536db4b77f49d057a8ec1f11162000 Name: dusklight Version: 2.0.3 Release: 2%{?dist} Summary: Native PC port of the Twilight Princess decompilation # Statically linked components (Dawn, ImGui, Tracy, Luau, ...) carry their # own permissive licenses. License: CC0-1.0 AND MIT AND BSD-3-Clause AND Apache-2.0 URL: https://github.com/TwilitRealm/dusklight Source0: %{url}/archive/refs/tags/v%{version}/%{name}-%{version}.tar.gz Source1: https://github.com/encounter/aurora/archive/%{aurora_commit}/aurora-%{aurora_commit}.tar.gz Source2: https://github.com/encounter/borealis/archive/%{borealis_commit}/borealis-%{borealis_commit}.tar.gz Source3: https://github.com/TwilitRealm/dusklight-cosmetics/archive/%{cosmetics_commit}/dusklight-cosmetics-%{cosmetics_commit}.tar.gz Source4: https://github.com/TwilitRealm/dusklight-randomizer/archive/%{randomizer_commit}/dusklight-randomizer-%{randomizer_commit}.tar.gz # With DUSK_PACKAGE_INSTALL the bundled mods (including the Luau runtime) # are installed under the asset dir, but the loader only looks next to the # executable, so every Luau mod fails with a missing runtime service. Patch0: package-install-mods-dir.patch ExclusiveArch: x86_64 aarch64 BuildRequires: gcc-c++ BuildRequires: git-core BuildRequires: cmake >= 3.25 BuildRequires: ninja-build BuildRequires: python3 BuildRequires: python3-markupsafe BuildRequires: cxxopts-devel BuildRequires: fmt-devel >= 11 BuildRequires: json-devel BuildRequires: libzstd-devel BuildRequires: xxhash-devel BuildRequires: abseil-cpp-devel BuildRequires: pkgconfig(alsa) BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(freetype2) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(libcurl) BuildRequires: pkgconfig(libdecor-0) BuildRequires: pkgconfig(libpng) BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(libusb-1.0) BuildRequires: pkgconfig(libunwind) BuildRequires: pkgconfig(openssl) BuildRequires: pkgconfig(sdl3) BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(vulkan) BuildRequires: pkgconfig(wayland-client) BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(xcursor) BuildRequires: pkgconfig(xi) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(xrandr) BuildRequires: pkgconfig(xscrnsaver) BuildRequires: pkgconfig(xtst) BuildRequires: desktop-file-utils BuildRequires: libappstream-glib Requires: hicolor-icon-theme Requires: vulkan-loader %description Dusklight is a reverse-engineered reimplementation of Twilight Princess for PC, built on the GameCube decompilation. It aims to be as accurate as possible to the original while adding options, enhancements, and tools to customize the experience. No game assets are included. A dump of your own copy of the game is required and is passed with --dvd. %prep %autosetup -p1 -n %{name}-%{version} for sub in extern/aurora:aurora-%{aurora_commit} \ extern/borealis:borealis-%{borealis_commit} \ mods/cosmetics:dusklight-cosmetics-%{cosmetics_commit} \ mods/randomizer:dusklight-randomizer-%{randomizer_commit}; do dir="${sub%%:*}" archive="${sub#*:}" rm -rf "${dir}" mkdir -p "${dir}" tar -xzf "%{_sourcedir}/${archive}.tar.gz" --strip-components=1 -C "${dir}" done %build %cmake -G Ninja \ -DCMAKE_BUILD_TYPE=Release \ -DDUSK_PACKAGE_INSTALL=ON \ -DBOREALIS_APP_VERSION_OVERRIDE=%{version} \ -DAURORA_SDL3_PROVIDER=system \ -DAURORA_NOD_PROVIDER=package \ -DBUILD_SHARED_LIBS=OFF %cmake_build %install %cmake_install # The randomizer mod's base64pp dependency installs its own headers and # static library, which nothing outside the mod uses. rm -f %{buildroot}%{_includedir}/base64pp*.h \ %{buildroot}%{_libdir}/libbase64pp.a \ %{buildroot}%{_libdir}/pkgconfig/base64pp.pc for size in 16 32 48 64 128 256 512 1024; do install -Dpm 0644 platforms/freedesktop/${size}x${size}/apps/dev.twilitrealm.dusk.png \ %{buildroot}%{_datadir}/icons/hicolor/${size}x${size}/apps/dev.twilitrealm.dusk.png done install -Dpm 0644 platforms/freedesktop/dev.twilitrealm.dusk.desktop \ %{buildroot}%{_datadir}/applications/dev.twilitrealm.dusk.desktop install -Dpm 0644 platforms/freedesktop/dev.twilitrealm.dusk.metainfo.xml \ %{buildroot}%{_metainfodir}/dev.twilitrealm.dusk.metainfo.xml %check desktop-file-validate %{buildroot}%{_datadir}/applications/dev.twilitrealm.dusk.desktop appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/dev.twilitrealm.dusk.metainfo.xml test -x %{buildroot}%{_bindir}/dusklight %files %license LICENSE.md %doc README.md %{_bindir}/dusklight %{_datadir}/dusklight/ %{_datadir}/applications/dev.twilitrealm.dusk.desktop %{_datadir}/icons/hicolor/*/apps/dev.twilitrealm.dusk.png %{_metainfodir}/dev.twilitrealm.dusk.metainfo.xml %changelog * Tue Oct 13 2026 sachesi - 2.0.3-2 - Build for aarch64 with the prebuilt nod library. * Sat Oct 03 2026 sachesi - 2.0.3-1 - Update to 2.0.3, with the aurora, borealis and randomizer commits it pins. * Mon Sep 21 2026 sachesi - 2.0.1-2 - Load bundled mods from /usr/share/dusklight/mods so the Luau runtime is found * Mon Sep 21 2026 sachesi - 2.0.1-1 - Initial package for Copr.