{ lib, stdenv, fetchurl, # keep-sorted start adwaita-icon-theme, alsa-lib, autoPatchelfHook, copyDesktopItems, curl, dbus-glib, gtk3, hicolor-icon-theme, libXtst, libva, makeBinaryWrapper, makeDesktopItem, patchelfUnstable, pciutils, pipewire, wrapGAppsHook3, # keep-sorted end nix-update-script, ... }: stdenv.mkDerivation (finalAttrs: { pname = "glide-browser"; version = "0.1.54a"; src = fetchurl { url = "https://github.com/glide-browser/glide/releases/download/${finalAttrs.version}/glide.linux-x86_64.tar.xz"; hash = "sha256-Rw85b+9eaiM9szWpYZiF7FqJY7OpliOwt09/c8UWlGk="; }; nativeBuildInputs = [ # keep-sorted start autoPatchelfHook copyDesktopItems makeBinaryWrapper patchelfUnstable wrapGAppsHook3 # keep-sorted end ]; buildInputs = [ # keep-sorted start adwaita-icon-theme alsa-lib dbus-glib gtk3 hicolor-icon-theme libXtst # keep-sorted end ]; runtimeDependencies = [ # keep-sorted start curl libva.out pciutils # keep-sorted end ]; appendRunpaths = [ "${pipewire}/lib" ]; # Firefox uses "relrhack" to manually process relocations from a fixed offset patchelfFlags = [ "--no-clobber-old-sections" ]; installPhase = '' runHook preInstall mkdir -p $out/bin $out/share/icons/hicolor/ $out/lib/glide-browser-bin-${finalAttrs.version} cp -t $out/lib/glide-browser-bin-${finalAttrs.version} -r * chmod +x $out/lib/glide-browser-bin-${finalAttrs.version}/glide iconDir=$out/share/icons/hicolor browserIcons=$out/lib/glide-browser-bin-${finalAttrs.version}/browser/chrome/icons/default for i in 16 32 48 64 128; do iconSizeDir="$iconDir/''${i}x$i/apps" mkdir -p $iconSizeDir cp $browserIcons/default$i.png $iconSizeDir/glide-brower.png done ln -s $out/lib/glide-browser-bin-${finalAttrs.version}/glide $out/bin/glide ln -s $out/bin/glide $out/bin/glide-browser runHook postInstall ''; desktopItems = [ (makeDesktopItem { name = "glide-browser-bin"; exec = "glide-browser --name glide-browser %U"; icon = "glide-browser"; desktopName = "Glide Browser"; genericName = "Web Browser"; terminal = false; startupNotify = true; startupWMClass = "glide-browser"; categories = [ "Network" "WebBrowser" ]; mimeTypes = [ "text/html" "text/xml" "application/xhtml+xml" "application/vnd.mozilla.xul+xml" "x-scheme-handler/http" "x-scheme-handler/https" ]; actions = { new-window = { name = "New Window"; exec = "glide-browser --new-window %U"; }; new-private-window = { name = "New Private Window"; exec = "glide-browser --private-window %U"; }; profile-manager-window = { name = "Profile Manager"; exec = "glide-browser --ProfileManager"; }; }; }) ]; passthru.updateScript = nix-update-script { extraArgs = [ "--url" "https://github.com/glide-browser/glide" ]; }; meta = { changelog = "https://glide-browser.app/changelog#${finalAttrs.version}"; description = "Extensible and keyboard-focused web browser, based on Firefox (binary package)"; homepage = "https://glide-browser.app/"; license = lib.licenses.mpl20; sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; platforms = [ "x86_64-linux" ]; maintainers = with lib.maintainers; [ pyrox0 ]; mainProgram = "glide-browser"; }; })