From bd90c3fc69047b6ae8d8c57522e462a01a8d0baf Mon Sep 17 00:00:00 2001 From: qubitnano <146656568+qubitnano@users.noreply.github.com> Date: Mon, 1 Jun 2026 22:22:45 -0400 Subject: [PATCH] flake.nix: devendor aurora, add BUILD_SHARED_LIBS=OFF (#1956) * flake.nix: devendor aurora * flake.nix: nixfmt * flake.nix: add BUILD_SHARED_LIBS=OFF --- flake.nix | 241 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 126 insertions(+), 115 deletions(-) diff --git a/flake.nix b/flake.nix index 0a2156a4d5..713acef074 100644 --- a/flake.nix +++ b/flake.nix @@ -57,12 +57,22 @@ inherit (pkgs.stdenv.hostPlatform) isDarwin; hasNodPrebuilt = nodPrebuiltInfo ? ${system}; - aurora = pkgs.fetchFromGitHub { - owner = "encounter"; - repo = "aurora"; - rev = "10006618ee493f248b8597e4dfa1d2871d76a1d9"; - hash = "sha256-lY2xuVyB7aPJ9+2wwLRB3F5U/BuPSxdSpegdG+qNd9o="; - }; + aurora = builtins.pathExists "${self}/extern/aurora/CMakeLists.txt"; + needSubmodules = '' + dusklight: The aurora submodule is not vendored. Add submodules=1 to build. + + As a flake input: + + dusklight.url = "git+https://github.com/TwilitRealm/dusklight?ref=main&submodules=1"; + + nix command: + + nix run 'git+https://github.com/TwilitRealm/dusklight?submodules=1' + + Local checkout: + + nix run '.?submodules=1#dusklight' + ''; dawn = pkgs.fetchzip { url = "https://github.com/encounter/dawn-build/releases/download/${dawnVersion}/dawn-${dawnInfo.${system}.triple}.tar.gz"; @@ -153,119 +163,120 @@ }; }; - dusklight = pkgs.stdenv.mkDerivation { - pname = "dusklight"; - version = versionSuffix; - src = ./.; + dusklight = + if !aurora then + throw needSubmodules + else + pkgs.stdenv.mkDerivation { + pname = "dusklight"; + version = versionSuffix; + src = ./.; - postUnpack = '' - chmod -R u+w "$sourceRoot" - rm -rf "$sourceRoot/extern/aurora" - mkdir -p "$sourceRoot/extern" - cp -r ${aurora} "$sourceRoot/extern/aurora" - chmod -R u+w "$sourceRoot/extern/aurora" - substituteInPlace "$sourceRoot/extern/aurora/CMakeLists.txt" \ - --replace-warn "add_subdirectory(tests)" "" - ''; - - nativeBuildInputs = [ - pkgs.cmake - pkgs.ninja - pkgs.pkg-config - pkgs.python3 - pkgs.python3Packages.markupsafe - ] - ++ lib.optionals (!isDarwin) [ pkgs.autoPatchelfHook ]; - - buildInputs = [ - pkgs.sdl3 - pkgs.freetype - pkgs.zstd - pkgs.cxxopts - pkgs.nlohmann_json - pkgs.xxHash - pkgs.abseil-cpp - pkgs.zlib - pkgs.libpng - pkgs.libjpeg_turbo - pkgs.curl - pkgs.openssl - ] - ++ lib.optionals isDarwin [ - pkgs.apple-sdk_15 - pkgs.libiconv - ] - ++ lib.optionals (!isDarwin) [ - pkgs.libGL - pkgs.libGLU - pkgs.libglvnd - pkgs.vulkan-loader - pkgs.libX11 - pkgs.libxcb - pkgs.libXcursor - pkgs.libxi - pkgs.libxrandr - pkgs.libxscrnsaver - pkgs.libxtst - pkgs.libxinerama - pkgs.libxkbcommon - pkgs.wayland - pkgs.libdecor - pkgs.alsa-lib - pkgs.libpulseaudio - pkgs.pipewire - pkgs.dbus - pkgs.udev - pkgs.libusb1 - pkgs.libunwind - pkgs.gtk3 - ]; - - cmakeBuildType = "RelWithDebInfo"; - ninjaFlags = [ "dusklight" ]; - - cmakeFlags = [ - "-DDUSK_VERSION_OVERRIDE=${versionSuffix}" - "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" - "-DAURORA_DAWN_PROVIDER=package" - "-DAURORA_DAWN_LINKAGE=static" - "-DAURORA_NOD_PROVIDER=package" - "-DAURORA_NOD_LINKAGE=static" - "-DAURORA_SDL3_PROVIDER=system" - ] - ++ lib.mapAttrsToList (key: src: "-DFETCHCONTENT_SOURCE_DIR_${key}=${src}") fetchContentDirs; - - installPhase = - if isDarwin then - '' - runHook preInstall - mkdir -p "$out/Applications" - cp -r Dusklight.app "$out/Applications/Dusklight.app" - runHook postInstall - '' - else - '' - runHook preInstall - install -Dm755 dusklight "$out/bin/dusklight" - cp -r "$src/res" "$out/bin/res" - install -Dm644 "$src/platforms/freedesktop/dev.twilitrealm.dusk.desktop" \ - "$out/share/applications/dev.twilitrealm.dusk.desktop" - for size in 16 32 48 64 128 256 512 1024; do - install -Dm644 "$src/platforms/freedesktop/''${size}x''${size}/apps/dev.twilitrealm.dusk.png" \ - "$out/share/icons/hicolor/''${size}x''${size}/apps/dev.twilitrealm.dusk.png" - done - runHook postInstall + postUnpack = '' + chmod -R u+w "$sourceRoot" + substituteInPlace "$sourceRoot/extern/aurora/CMakeLists.txt" \ + --replace-warn "add_subdirectory(tests)" "" ''; - dontStrip = true; + nativeBuildInputs = [ + pkgs.cmake + pkgs.ninja + pkgs.pkg-config + pkgs.python3 + pkgs.python3Packages.markupsafe + ] + ++ lib.optionals (!isDarwin) [ pkgs.autoPatchelfHook ]; - meta = { - description = "Dusklight — native PC port of the Twilight Princess decompilation"; - homepage = "https://github.com/zeldaret/tp"; - platforms = supportedSystems; - mainProgram = "dusklight"; - }; - }; + buildInputs = [ + pkgs.sdl3 + pkgs.freetype + pkgs.zstd + pkgs.cxxopts + pkgs.nlohmann_json + pkgs.xxHash + pkgs.abseil-cpp + pkgs.zlib + pkgs.libpng + pkgs.libjpeg_turbo + pkgs.curl + pkgs.openssl + ] + ++ lib.optionals isDarwin [ + pkgs.apple-sdk_15 + pkgs.libiconv + ] + ++ lib.optionals (!isDarwin) [ + pkgs.libGL + pkgs.libGLU + pkgs.libglvnd + pkgs.vulkan-loader + pkgs.libX11 + pkgs.libxcb + pkgs.libXcursor + pkgs.libxi + pkgs.libxrandr + pkgs.libxscrnsaver + pkgs.libxtst + pkgs.libxinerama + pkgs.libxkbcommon + pkgs.wayland + pkgs.libdecor + pkgs.alsa-lib + pkgs.libpulseaudio + pkgs.pipewire + pkgs.dbus + pkgs.udev + pkgs.libusb1 + pkgs.libunwind + pkgs.gtk3 + ]; + + cmakeBuildType = "RelWithDebInfo"; + ninjaFlags = [ "dusklight" ]; + + cmakeFlags = [ + "-DDUSK_VERSION_OVERRIDE=${versionSuffix}" + "-DFETCHCONTENT_FULLY_DISCONNECTED=ON" + "-DAURORA_DAWN_PROVIDER=package" + "-DAURORA_DAWN_LINKAGE=static" + "-DAURORA_NOD_PROVIDER=package" + "-DAURORA_NOD_LINKAGE=static" + "-DAURORA_SDL3_PROVIDER=system" + "-DBUILD_SHARED_LIBS=OFF" + ] + ++ lib.mapAttrsToList (key: src: "-DFETCHCONTENT_SOURCE_DIR_${key}=${src}") fetchContentDirs; + + installPhase = + if isDarwin then + '' + runHook preInstall + mkdir -p "$out/Applications" + cp -r Dusklight.app "$out/Applications/Dusklight.app" + runHook postInstall + '' + else + '' + runHook preInstall + install -Dm755 dusklight "$out/bin/dusklight" + cp -r "$src/res" "$out/bin/res" + install -Dm644 "$src/platforms/freedesktop/dev.twilitrealm.dusk.desktop" \ + "$out/share/applications/dev.twilitrealm.dusk.desktop" + for size in 16 32 48 64 128 256 512 1024; do + install -Dm644 "$src/platforms/freedesktop/''${size}x''${size}/apps/dev.twilitrealm.dusk.png" \ + "$out/share/icons/hicolor/''${size}x''${size}/apps/dev.twilitrealm.dusk.png" + done + runHook postInstall + ''; + + dontStrip = true; + + meta = { + description = "Dusklight — native PC port of the Twilight Princess decompilation"; + homepage = "https://github.com/zeldaret/tp"; + platforms = supportedSystems; + mainProgram = "dusklight"; + }; + }; # Tooling common to every supported host (Linux and macOS). commonDevTools = [