Some checks failed
CI / check (push) Has been cancelled
- Add LD_LIBRARY_PATH to wrapper so Electron GPU process finds bundled libEGL.so.1 - Add glib.bin to buildInputs and wrap gsettings into PATH - Create versioned symlinks for bundled libEGL.so and libGLESv2.so - Clean up formatting in package inputs
155 lines
3.3 KiB
Nix
155 lines
3.3 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
autoPatchelfHook,
|
|
makeWrapper,
|
|
wrapGAppsHook3,
|
|
gtk3,
|
|
glib,
|
|
libdrm,
|
|
mesa,
|
|
nss,
|
|
nspr,
|
|
alsa-lib,
|
|
dbus,
|
|
cups,
|
|
libxkbcommon,
|
|
xorg,
|
|
systemd,
|
|
libnotify,
|
|
libsecret,
|
|
libappindicator-gtk3,
|
|
gsettings-desktop-schemas,
|
|
}:
|
|
|
|
let
|
|
version = "6.0.3";
|
|
pname = "loop";
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
inherit pname version;
|
|
|
|
src = fetchurl {
|
|
url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x64.tar.gz";
|
|
hash = "sha256-xqbESTUYHumdVbxcaMi838wgCVBH05KfsBZB+QOwNhk=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
autoPatchelfHook
|
|
makeWrapper
|
|
wrapGAppsHook3
|
|
];
|
|
|
|
buildInputs = [
|
|
stdenv.cc.cc.lib
|
|
gtk3
|
|
glib
|
|
libdrm
|
|
mesa
|
|
nss
|
|
nspr
|
|
alsa-lib
|
|
dbus
|
|
cups
|
|
libxkbcommon
|
|
xorg.libX11
|
|
xorg.libXcomposite
|
|
xorg.libXdamage
|
|
xorg.libXext
|
|
xorg.libXfixes
|
|
xorg.libXrandr
|
|
xorg.libxcb
|
|
xorg.libxshmfence
|
|
systemd
|
|
libnotify
|
|
libsecret
|
|
libappindicator-gtk3
|
|
gsettings-desktop-schemas
|
|
glib.bin
|
|
];
|
|
|
|
dontBuild = true;
|
|
dontStrip = true;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out/share/loop" "$out/bin" "$out/share/applications" "$out/share/icons/hicolor/256x256/apps"
|
|
|
|
cp -r . "$out/share/loop/"
|
|
|
|
# Find and symlink the main executable
|
|
if [ -f "$out/share/loop/loop" ]; then
|
|
ln -s "$out/share/loop/loop" "$out/bin/loop"
|
|
elif [ -f "$out/share/loop/Loop" ]; then
|
|
ln -s "$out/share/loop/Loop" "$out/bin/loop"
|
|
elif [ -f "$out/share/loop/loop-desktop" ]; then
|
|
ln -s "$out/share/loop/loop-desktop" "$out/bin/loop"
|
|
else
|
|
# Try to find any executable
|
|
for f in "$out/share/loop/"*; do
|
|
if [ -x "$f" ] && [ ! -d "$f" ]; then
|
|
ln -s "$f" "$out/bin/loop"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Desktop entry
|
|
cat > "$out/share/applications/loop.desktop" << EOF
|
|
[Desktop Entry]
|
|
Name=Loop
|
|
Comment=Corporate messenger for your team
|
|
Exec=$out/bin/loop
|
|
Icon=loop
|
|
Terminal=false
|
|
Type=Application
|
|
Categories=Network;InstantMessaging;
|
|
EOF
|
|
|
|
# Install icon if present
|
|
if [ -f "$out/share/loop/loop-desktop.png" ]; then
|
|
cp "$out/share/loop/loop-desktop.png" "$out/share/icons/hicolor/256x256/apps/loop.png"
|
|
elif [ -f "$out/share/loop/app_icon.png" ]; then
|
|
cp "$out/share/loop/app_icon.png" "$out/share/icons/hicolor/256x256/apps/loop.png"
|
|
fi
|
|
|
|
# Electron GPU libraries expect versioned sonames
|
|
if [ -f "$out/share/loop/libEGL.so" ] && [ ! -e "$out/share/loop/libEGL.so.1" ]; then
|
|
ln -s libEGL.so "$out/share/loop/libEGL.so.1"
|
|
fi
|
|
if [ -f "$out/share/loop/libGLESv2.so" ] && [ ! -e "$out/share/loop/libGLESv2.so.2" ]; then
|
|
ln -s libGLESv2.so "$out/share/loop/libGLESv2.so.2"
|
|
fi
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
postFixup = ''
|
|
wrapProgram $out/bin/loop \
|
|
--prefix PATH : ${glib.bin}/bin \
|
|
--prefix LD_LIBRARY_PATH : $out/share/loop
|
|
'';
|
|
|
|
passthru = {
|
|
category = "Communication";
|
|
updateScript = [
|
|
"nix-update"
|
|
"--flake"
|
|
".#loop"
|
|
];
|
|
};
|
|
|
|
meta = with lib; {
|
|
description = "Corporate messenger for your team";
|
|
homepage = "https://wilix.dev/loop";
|
|
license = licenses.unfree;
|
|
maintainers = with maintainers; [ ];
|
|
platforms = [ "x86_64-linux" ];
|
|
mainProgram = "loop";
|
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
|
};
|
|
}
|