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, lib,
stdenv, appimageTools,
fetchurl, 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 let
version = "6.0.3"; version = "6.0.3";
pname = "loop";
in in
stdenv.mkDerivation { appimageTools.wrapType2 {
inherit pname version; pname = "loop";
inherit version;
src = fetchurl { src = fetchurl {
url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x64.tar.gz"; url = "https://artifacts.wilix.dev/repository/loop-files/loop-${version}/loop-desktop-${version}-linux-x86_64.AppImage";
hash = "sha256-xqbESTUYHumdVbxcaMi838wgCVBH05KfsBZB+QOwNhk="; hash = "sha256-zGWKlY6XwuL0e2mDpB/1t0UnW73bhCPcg6XkBJBCEFY=";
}; };
nativeBuildInputs = [ extraPkgs = pkgsWith: [
autoPatchelfHook pkgsWith.gtk3
makeWrapper pkgsWith.glib
wrapGAppsHook3
]; ];
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 = { passthru = {
category = "Communication"; category = "Communication";
updateScript = [ updateScript = [