refactor(loop): switch from tar.gz to AppImage packaging
Some checks failed
CI / check (push) Has been cancelled

- Use appimageTools.wrapType2 instead of manual stdenv.mkDerivation
- Source: loop-desktop-6.0.3-linux-x86_64.AppImage
- Simplify dependencies via extraPkgs (gtk3, glib)
This commit is contained in:
2026-06-09 11:16:33 +03:00
parent a0abf62d0d
commit 5ec513fe8c

View File

@@ -1,146 +1,27 @@
{
lib,
stdenv,
appimageTools,
fetchurl,
autoPatchelfHook,
makeWrapper,
wrapGAppsHook3,
gtk3,
glib,
libdrm,
mesa,
nss,
nspr,
alsa-lib,
dbus,
cups,
libxkbcommon,
libx11,
libxcomposite,
libxdamage,
libxext,
libxfixes,
libxrandr,
libxcb,
libxshmfence,
systemd,
libnotify,
libsecret,
libappindicator-gtk3,
gsettings-desktop-schemas,
}:
let
version = "6.0.3";
pname = "loop";
in
stdenv.mkDerivation {
inherit pname version;
appimageTools.wrapType2 {
pname = "loop";
inherit version;
src = fetchurl {
url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x64.tar.gz";
hash = "sha256-xqbESTUYHumdVbxcaMi838wgCVBH05KfsBZB+QOwNhk=";
url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x86_64.AppImage";
hash = "sha256-zGWKlY6XwuL0e2mDpB/1t0UnW73bhCPcg6XkBJBCEFY=";
};
nativeBuildInputs = [
autoPatchelfHook
makeWrapper
wrapGAppsHook3
extraPkgs = pkgsWith: [
pkgsWith.gtk3
pkgsWith.glib
];
buildInputs = [
stdenv.cc.cc.lib
gtk3
glib
libdrm
mesa
nss
nspr
alsa-lib
dbus
cups
libxkbcommon
libx11
libxcomposite
libxdamage
libxext
libxfixes
libxrandr
libxcb
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 \
--add-flags "--ozone-platform=x11"
'';
passthru = {
category = "Communication";
updateScript = [