From e6d386d362c2fe33f2d913aca18fc4789cf13374 Mon Sep 17 00:00:00 2001 From: mjallen18 Date: Wed, 17 Sep 2025 14:18:30 -0500 Subject: [PATCH] bolt? --- packages/bolt-launcher/default.nix | 180 +++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 packages/bolt-launcher/default.nix diff --git a/packages/bolt-launcher/default.nix b/packages/bolt-launcher/default.nix new file mode 100644 index 0000000..aa57a89 --- /dev/null +++ b/packages/bolt-launcher/default.nix @@ -0,0 +1,180 @@ +{ lib +, stdenv +, fetchzip +, autoPatchelfHook +, makeWrapper +# Core dependencies +, alsa-lib +, at-spi2-core +, cairo +, cups +, dbus +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gtk3 +, libarchive +, libdrm +, libGL +, libX11 +, libxcb +, libXcomposite +, libXdamage +, libXext +, libXfixes +, libxkbcommon +, libXrandr +, libxshmfence +, mesa +, nspr +, nss +, pango +, systemd +, xorg +, zlib +# Additional CEF/Chromium dependencies +, libnotify +, libpulseaudio +, libuuid +, libva +, pipewire +, udev +, wayland +, jdk17 # for RuneLite/HDOS +, gtk2 ? null # for RS3 +}: + +stdenv.mkDerivation rec { + pname = "bolt-launcher"; + version = "0.19.1"; + + src = fetchzip { + url = "https://github.com/Adamcake/Bolt/releases/download/${version}/Bolt-Linux.zip"; + sha256 = "sha256-5tGXz2PIz0HIHMGNF7NpYVsB8hnueitNYKi6LtJpuPw="; # Replace with actual hash + stripRoot = false; + }; + + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + alsa-lib + at-spi2-core + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gtk3 + libarchive + libdrm + libGL + libX11 + libxcb + libXcomposite + libXdamage + libXext + libXfixes + libxkbcommon + libXrandr + libxshmfence + mesa + nspr + nss + pango + stdenv.cc.cc.lib # for libstdc++.so.6 + systemd + zlib + # Additional CEF/Chromium deps + libnotify + libpulseaudio + libuuid + libva + pipewire + udev + wayland + ] ++ (with xorg; [ + libXcursor + libXi + libXinerama + libXrender + libXScrnSaver + libXtst + libXxf86vm + ]); + + dontConfigure = true; + dontBuild = true; + + installPhase = '' + runHook preInstall + + # Create directory structure + mkdir -p $out/bin + mkdir -p $out/lib/bolt-launcher + mkdir -p $out/share/applications + mkdir -p $out/share/icons + + # Copy all files to lib directory + cp -r ./bolt-launcher/* $out/lib/bolt-launcher/ + + # The main executable is 'bolt' (lowercase) + chmod +x $out/lib/bolt-launcher/bolt + + # Also make chrome-sandbox executable (needed for CEF) + if [ -f $out/lib/bolt-launcher/chrome-sandbox ]; then + chmod +x $out/lib/bolt-launcher/chrome-sandbox + fi + + # Create wrapper script with proper library paths + makeWrapper $out/lib/bolt-launcher/bolt $out/bin/bolt-launcher \ + --prefix LD_LIBRARY_PATH : "$out/lib/bolt-launcher:${lib.makeLibraryPath buildInputs}" \ + --set BOLT_SKIP_UPDATE "1" \ + --chdir "$out/lib/bolt-launcher" \ + ${lib.optionalString (jdk17 != null) "--prefix PATH : ${jdk17}/bin"} + + # Create a simple desktop file if none exists + cat > $out/share/applications/bolt-launcher.desktop << EOF + [Desktop Entry] + Name=Bolt Launcher + Comment=Free open-source third-party implementation of the Jagex Launcher + Exec=$out/bin/bolt-launcher + Icon=bolt-launcher + Type=Application + Categories=Game; + EOF + + runHook postInstall + ''; + + # Additional runtime fixes + postFixup = '' + # The CEF libraries are in the same directory as the main executable + # Make sure they can find each other + patchelf --set-rpath "$out/lib/bolt-launcher:${lib.makeLibraryPath buildInputs}" \ + $out/lib/bolt-launcher/bolt || true + + # Patch the CEF libraries + for lib in $out/lib/bolt-launcher/*.so*; do + if [ -f "$lib" ]; then + patchelf --set-rpath "$out/lib/bolt-launcher:${lib.makeLibraryPath buildInputs}" "$lib" || true + fi + done + ''; + + meta = with lib; { + description = "Free open-source third-party implementation of the Jagex Launcher"; + homepage = "https://bolt.adamcake.com/"; + license = licenses.agpl3Only; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ ]; # Add your maintainer name here + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; + }; +} \ No newline at end of file