My Nix Configuration
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 # keep-sorted start 6 adwaita-icon-theme, 7 alsa-lib, 8 autoPatchelfHook, 9 copyDesktopItems, 10 curl, 11 dbus-glib, 12 gtk3, 13 hicolor-icon-theme, 14 libXtst, 15 libva, 16 makeBinaryWrapper, 17 makeDesktopItem, 18 patchelfUnstable, 19 pciutils, 20 pipewire, 21 wrapGAppsHook3, 22 # keep-sorted end 23 nix-update-script, 24 ... 25}: 26stdenv.mkDerivation (finalAttrs: { 27 pname = "glide-browser"; 28 version = "0.1.54a"; 29 30 src = fetchurl { 31 url = "https://github.com/glide-browser/glide/releases/download/${finalAttrs.version}/glide.linux-x86_64.tar.xz"; 32 hash = "sha256-Rw85b+9eaiM9szWpYZiF7FqJY7OpliOwt09/c8UWlGk="; 33 }; 34 35 nativeBuildInputs = [ 36 # keep-sorted start 37 autoPatchelfHook 38 copyDesktopItems 39 makeBinaryWrapper 40 patchelfUnstable 41 wrapGAppsHook3 42 # keep-sorted end 43 ]; 44 45 buildInputs = [ 46 # keep-sorted start 47 adwaita-icon-theme 48 alsa-lib 49 dbus-glib 50 gtk3 51 hicolor-icon-theme 52 libXtst 53 # keep-sorted end 54 ]; 55 56 runtimeDependencies = [ 57 # keep-sorted start 58 curl 59 libva.out 60 pciutils 61 # keep-sorted end 62 ]; 63 64 appendRunpaths = [ "${pipewire}/lib" ]; 65 66 # Firefox uses "relrhack" to manually process relocations from a fixed offset 67 patchelfFlags = [ "--no-clobber-old-sections" ]; 68 69 installPhase = '' 70 runHook preInstall 71 72 mkdir -p $out/bin $out/share/icons/hicolor/ $out/lib/glide-browser-bin-${finalAttrs.version} 73 cp -t $out/lib/glide-browser-bin-${finalAttrs.version} -r * 74 chmod +x $out/lib/glide-browser-bin-${finalAttrs.version}/glide 75 iconDir=$out/share/icons/hicolor 76 browserIcons=$out/lib/glide-browser-bin-${finalAttrs.version}/browser/chrome/icons/default 77 78 for i in 16 32 48 64 128; do 79 iconSizeDir="$iconDir/''${i}x$i/apps" 80 mkdir -p $iconSizeDir 81 cp $browserIcons/default$i.png $iconSizeDir/glide-browser.png 82 done 83 84 85 ln -s $out/lib/glide-browser-bin-${finalAttrs.version}/glide $out/bin/glide 86 ln -s $out/bin/glide $out/bin/glide-browser 87 88 runHook postInstall 89 ''; 90 91 desktopItems = [ 92 (makeDesktopItem { 93 name = "glide-browser-bin"; 94 exec = "glide-browser --name glide-browser %U"; 95 icon = "glide-browser"; 96 desktopName = "Glide Browser"; 97 genericName = "Web Browser"; 98 terminal = false; 99 startupNotify = true; 100 startupWMClass = "glide-browser"; 101 categories = [ 102 "Network" 103 "WebBrowser" 104 ]; 105 mimeTypes = [ 106 "text/html" 107 "text/xml" 108 "application/xhtml+xml" 109 "application/vnd.mozilla.xul+xml" 110 "x-scheme-handler/http" 111 "x-scheme-handler/https" 112 ]; 113 actions = { 114 new-window = { 115 name = "New Window"; 116 exec = "glide-browser --new-window %U"; 117 }; 118 new-private-window = { 119 name = "New Private Window"; 120 exec = "glide-browser --private-window %U"; 121 }; 122 profile-manager-window = { 123 name = "Profile Manager"; 124 exec = "glide-browser --ProfileManager"; 125 }; 126 }; 127 }) 128 ]; 129 130 passthru.updateScript = nix-update-script { 131 extraArgs = [ 132 "--url" 133 "https://github.com/glide-browser/glide" 134 ]; 135 }; 136 137 meta = { 138 changelog = "https://glide-browser.app/changelog#${finalAttrs.version}"; 139 description = "Extensible and keyboard-focused web browser, based on Firefox (binary package)"; 140 homepage = "https://glide-browser.app/"; 141 license = lib.licenses.mpl20; 142 sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; 143 platforms = [ "x86_64-linux" ]; 144 maintainers = with lib.maintainers; [ pyrox0 ]; 145 mainProgram = "glide-browser"; 146 }; 147})