Files
millerson-overlay.nix/packages/loop/package.nix
Alexander Miroshnichenko bede48c22e
Some checks failed
CI / check (push) Has been cancelled
fix(loop): remove forced X11, keep --no-sandbox
Revert the --ozone-platform=x11 flag since the user prefers native
Wayland. The flag was added to work around a zxdg_exporter_v1
Wayland protocol crash in Electron, but forcing X11 is not
acceptable for Wayland users. Keep --no-sandbox for NixOS store
compatibility.
2026-05-29 20:23:03 +03:00

156 lines
3.4 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 \
--add-flags "--no-sandbox"
'';
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 ];
};
}