bolt?
This commit is contained in:
180
packages/bolt-launcher/default.nix
Normal file
180
packages/bolt-launcher/default.nix
Normal file
@@ -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 ];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user