-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added bolt-launcher, an alternative launcher for Runescape 3 / Old School Runescape. https://github.com/Adamcake/Bolt/releases/tag/0.9.0 bolt-launcher: add plugin loader for rs3 Building the app with luajit, which allows for Runescape 3 plugin loading. bolt-launcher: add runescape 3 dependencies Added Runescape 3 dependencies inside the buildFHSEnv, so that it can be used by the binary (downloaded from the internet by bolt-launcher itself, hence why the fhs env is needed here). bolt-launcher: fix dependency issues Added libbolt-plugin.so into $out/lib, which allows the program to use the Runescape 3 plugin loader. Also updated the mainProgram as well as runScript so that the program can be ran from nix run instead of just being able to be ran manually. Add feature flags for RS3 and HDOSAndRuneLite as well as .desktop and icon file support (#1) * Add enable flags for RS3 and HDOSAndRuneLite * Add .desktop and icon * Fix formatting w/ nixfmt * Remove enableHDOSAndRuneLite feature flag * Fix formatting Co-authored-by: Thomas King <thomas@tomking.io>
- Loading branch information
Showing
1 changed file
with
214 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,214 @@ | ||
{ | ||
lib, | ||
stdenv, | ||
fetchFromGitHub, | ||
makeWrapper, | ||
cmake, | ||
ninja, | ||
libarchive, | ||
libz, | ||
libcef, | ||
luajit, | ||
xorg, | ||
mesa, | ||
glib, | ||
nss, | ||
nspr, | ||
atk, | ||
at-spi2-atk, | ||
libdrm, | ||
expat, | ||
libxkbcommon, | ||
gtk3, | ||
jdk17, | ||
pango, | ||
cairo, | ||
alsa-lib, | ||
dbus, | ||
at-spi2-core, | ||
cups, | ||
systemd, | ||
buildFHSEnv, | ||
makeDesktopItem, | ||
copyDesktopItems, | ||
enableRS3 ? false, | ||
}: | ||
let | ||
cef = libcef.overrideAttrs (oldAttrs: { | ||
installPhase = | ||
let | ||
gl_rpath = lib.makeLibraryPath [ | ||
stdenv.cc.cc.lib | ||
]; | ||
rpath = lib.makeLibraryPath [ | ||
glib | ||
nss | ||
nspr | ||
atk | ||
at-spi2-atk | ||
libdrm | ||
expat | ||
xorg.libxcb | ||
libxkbcommon | ||
xorg.libX11 | ||
xorg.libXcomposite | ||
xorg.libXdamage | ||
xorg.libXext | ||
xorg.libXfixes | ||
xorg.libXrandr | ||
mesa | ||
gtk3 | ||
pango | ||
cairo | ||
alsa-lib | ||
dbus | ||
at-spi2-core | ||
cups | ||
xorg.libxshmfence | ||
systemd | ||
]; | ||
in | ||
'' | ||
mkdir -p $out/lib/ $out/share/cef/ | ||
cp libcef_dll_wrapper/libcef_dll_wrapper.a $out/lib/ | ||
cp -r ../Resources/* $out/lib/ | ||
cp -r ../Release/* $out/lib/ | ||
patchelf --set-rpath "${rpath}" $out/lib/libcef.so | ||
patchelf --set-rpath "${gl_rpath}" $out/lib/libEGL.so | ||
patchelf --set-rpath "${gl_rpath}" $out/lib/libGLESv2.so | ||
cp ../Release/*.bin $out/share/cef/ | ||
cp -r ../Resources/* $out/share/cef/ | ||
cp -r ../include $out | ||
cp -r ../libcef_dll $out | ||
cp -r ../cmake $out | ||
''; | ||
}); | ||
in | ||
let | ||
bolt = stdenv.mkDerivation (finalAttrs: { | ||
pname = "bolt-launcher"; | ||
version = "0.9.0"; | ||
|
||
src = fetchFromGitHub { | ||
owner = "AdamCake"; | ||
repo = "bolt"; | ||
rev = finalAttrs.version; | ||
fetchSubmodules = true; | ||
hash = "sha256-LIlRDcUWbQwIhFjtqYF+oVpTOPZ7IT0vMgysEVyJ1k8="; | ||
}; | ||
|
||
nativeBuildInputs = [ | ||
cmake | ||
ninja | ||
luajit | ||
makeWrapper | ||
copyDesktopItems | ||
]; | ||
|
||
buildInputs = [ | ||
mesa | ||
xorg.libX11 | ||
xorg.libxcb | ||
libarchive | ||
libz | ||
cef | ||
jdk17 | ||
]; | ||
|
||
cmakeFlags = [ | ||
"-D CMAKE_BUILD_TYPE=Release" | ||
"-D BOLT_LUAJIT_INCLUDE_DIR=${luajit}/include" | ||
"-G Ninja" | ||
]; | ||
|
||
preConfigure = '' | ||
mkdir -p cef/dist/Release cef/dist/Resources cef/dist/include | ||
ln -s ${cef}/lib/* cef/dist/Release | ||
ln -s ${cef}/share/cef/*.pak cef/dist/Resources | ||
ln -s ${cef}/share/cef/icudtl.dat cef/dist/Resources | ||
ln -s ${cef}/share/cef/locales cef/dist/Resources | ||
ln -s ${cef}/include/* cef/dist/include | ||
ln -s ${cef}/libcef_dll cef/dist/libcef_dll | ||
ln -s ${cef}/cmake cef/dist/cmake | ||
ln -s ${cef}/CMakeLists.txt cef/dist | ||
''; | ||
|
||
postFixup = '' | ||
makeWrapper "$out/opt/bolt-launcher/bolt" "$out/bin/${finalAttrs.pname}-${finalAttrs.version}" \ | ||
--set JAVA_HOME ${jdk17} | ||
mkdir -p $out/lib | ||
cp $out/usr/local/lib/libbolt-plugin.so $out/lib | ||
mkdir -p $out/share/icons/hicolor/256x256/apps | ||
cp ../icon/256.png $out/share/icons/hicolor/256x256/apps/${finalAttrs.pname}.png | ||
''; | ||
|
||
desktopItems = [ | ||
(makeDesktopItem { | ||
type = "Application"; | ||
terminal = false; | ||
name = "Bolt"; | ||
desktopName = "Bolt Launcher"; | ||
genericName = finalAttrs.pname; | ||
comment = "An alternative launcher for RuneScape"; | ||
exec = "${finalAttrs.pname}-${finalAttrs.version}"; | ||
icon = finalAttrs.pname; | ||
categories = [ "Game" ]; | ||
}) | ||
]; | ||
}); | ||
in | ||
buildFHSEnv { | ||
inherit (bolt) name version; | ||
|
||
targetPkgs = | ||
pkgs: | ||
[ bolt ] | ||
++ (with pkgs; [ | ||
xorg.libSM | ||
xorg.libXxf86vm | ||
xorg.libX11 | ||
glib | ||
pango | ||
cairo | ||
gdk-pixbuf | ||
libz | ||
libcap | ||
libsecret | ||
SDL2 | ||
libGL | ||
]) | ||
++ lib.optionals enableRS3 ( | ||
with pkgs; | ||
[ | ||
gtk2-x11 | ||
openssl_1_1 | ||
] | ||
); | ||
|
||
extraInstallCommands = '' | ||
mkdir -p $out/share/applications | ||
mkdir -p $out/share/icons/hicolor/256x256/apps | ||
ln -s ${bolt}/share/applications/*.desktop $out/share/applications/ | ||
ln -s ${bolt}/share/icons/hicolor/256x256/apps/*.png $out/share/icons/hicolor/256x256/apps/ | ||
''; | ||
|
||
runScript = "${bolt.name}"; | ||
|
||
meta = { | ||
homepage = "https://github.com/Adamcake/Bolt"; | ||
description = "An alternative launcher for RuneScape."; | ||
longDescription = '' | ||
Bolt Launcher supports HDOS/RuneLite by default with an optional feature flag for RS3 (enableRS3). | ||
''; | ||
license = lib.licenses.agpl3Plus; | ||
maintainers = with lib.maintainers; [ nezia ]; | ||
platforms = lib.platforms.linux; | ||
mainProgram = "${bolt.name}"; | ||
}; | ||
} |