diff --git a/packages/loop/package.nix b/packages/loop/package.nix index e7fa771..d9c7d6b 100644 --- a/packages/loop/package.nix +++ b/packages/loop/package.nix @@ -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 = [