From 03078ce8fa0a4c98ff028907271412f98be6811e Mon Sep 17 00:00:00 2001 From: zack Date: Tue, 8 Oct 2024 22:16:26 -0400 Subject: [PATCH] update zen --- flake.lock | 18 +- flake.nix | 2 +- packages/zen-browser-unwrapped/default.nix | 370 ++++++++++++++++++ .../surfer-dont-check-update.patch | 19 + packages/zen-browser/default.nix | 99 +---- packages/zen-browser/zen.desktop | 25 -- 6 files changed, 405 insertions(+), 128 deletions(-) create mode 100644 packages/zen-browser-unwrapped/default.nix create mode 100644 packages/zen-browser-unwrapped/surfer-dont-check-update.patch delete mode 100644 packages/zen-browser/zen.desktop diff --git a/flake.lock b/flake.lock index 54eefcb..215a5ad 100644 --- a/flake.lock +++ b/flake.lock @@ -104,17 +104,17 @@ "systems": "systems_5" }, "locked": { - "lastModified": 1716933162, - "narHash": "sha256-r2f8PSutFSGZ41ktTnW89s6BhuDfXmi18bHFq1u9Vog=", - "owner": "zackartz", - "repo": "zmio", - "rev": "6af9d01d6905b67572caa0fe803e31c10fd995dc", - "type": "github" + "lastModified": 1726333295, + "narHash": "sha256-oKYJ0AjaaMnlX0wayT1TKPqHDeLI0hph4pfPLsrognY=", + "ref": "refs/heads/main", + "rev": "04422a6a54de7aa4172e428d363c5f6068c486ef", + "revCount": 24, + "type": "git", + "url": "https://git.zoeys.computer/zoey/web" }, "original": { - "owner": "zackartz", - "repo": "zmio", - "type": "github" + "type": "git", + "url": "https://git.zoeys.computer/zoey/web" } }, "catppuccin": { diff --git a/flake.nix b/flake.nix index b073137..493c2d4 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - blog.url = "github:zackartz/zmio"; + blog.url = "git+https://git.zoeys.computer/zoey/web"; lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; diff --git a/packages/zen-browser-unwrapped/default.nix b/packages/zen-browser-unwrapped/default.nix new file mode 100644 index 0000000..0b644b9 --- /dev/null +++ b/packages/zen-browser-unwrapped/default.nix @@ -0,0 +1,370 @@ +{ + buildNpmPackage, + buildPackages, + fetchFromGitHub, + fetchurl, + lib, + overrideCC, + stdenv, + # build time + autoconf, + cargo, + dump_syms, + git, + gnum4, + nodejs, + patchelf, + pkg-config, + pkgsBuildBuild, + pkgsCross, + python3, + runCommand, + rsync, + rustc, + rust-cbindgen, + rustPlatform, + unzip, + vips, + wrapGAppsHook3, + writeShellScript, + # runtime + alsa-lib, + atk, + cairo, + cups, + dbus, + dbus-glib, + ffmpeg, + fontconfig, + freetype, + gdk-pixbuf, + gtk3, + glib, + icu73, + jemalloc, + libGL, + libGLU, + libdrm, + libevent, + libffi, + libglvnd, + libjack2, + libjpeg, + libkrb5, + libnotify, + libpng, + libpulseaudio, + libstartup_notification, + libva, + libvpx, + libwebp, + libxkbcommon, + libxml2, + makeWrapper, + mesa, + nasm, + nspr, + nss_latest, + pango, + pciutils, + pipewire, + sndio, + udev, + xcb-util-cursor, + xorg, + zlib, + # Generic changes the compatibility mode of the final binaries. + # + # Enabling generic will make the browser compatible with more devices at the + # cost of disabling hardware-specific optimizations. It is highly recommended + # to leave `generic` disabled. + generic ? false, + debugBuild ? false, + # On 32bit platforms, we disable adding "-g" for easier linking. + enableDebugSymbols ? !stdenv.hostPlatform.is32bit, + alsaSupport ? stdenv.hostPlatform.isLinux, + ffmpegSupport ? true, + gssSupport ? true, + jackSupport ? stdenv.hostPlatform.isLinux, + jemallocSupport ? !stdenv.hostPlatform.isMusl, + pipewireSupport ? waylandSupport && webrtcSupport, + pulseaudioSupport ? stdenv.hostPlatform.isLinux, + sndioSupport ? stdenv.hostPlatform.isLinux, + waylandSupport ? true, + privacySupport ? false, + # WARNING: NEVER set any of the options below to `true` by default. + # Set to `!privacySupport` or `false`. + crashreporterSupport ? !privacySupport && !stdenv.hostPlatform.isRiscV && !stdenv.hostPlatform.isMusl, + geolocationSupport ? !privacySupport, + webrtcSupport ? !privacySupport, +}: let + surfer = buildNpmPackage { + pname = "surfer"; + version = "1.4.21"; + + src = fetchFromGitHub { + owner = "zen-browser"; + repo = "surfer"; + rev = "7f6da82ec44d210875b9a9c40b2169df0c88ff44"; + hash = "sha256-QfckIXxg5gUNvoofM39ZEiKkYV62ZJduHKVd171HQBw="; + }; + + patches = [./surfer-dont-check-update.patch]; + + npmDepsHash = "sha256-p0RVqn0Yfe0jxBcBa/hYj5g9XSVMFhnnZT+au+bMs18="; + makeCacheWritable = true; + + SHARP_IGNORE_GLOBAL_LIBVIPS = false; + nativeBuildInputs = [pkg-config]; + buildInputs = [vips]; + }; + + llvmPackages0 = rustc.llvmPackages; + llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages; + + llvmPackages = llvmPackages0.override { + bootBintoolsNoLibc = null; + bootBintools = null; + }; + llvmPackagesBuildBuild = llvmPackagesBuildBuild0.override { + bootBintoolsNoLibc = null; + bootBintools = null; + }; + + buildStdenv = overrideCC llvmPackages.stdenv ( + llvmPackages.stdenv.cc.override {bintools = buildPackages.rustc.llvmPackages.bintools;} + ); + + wasiSysRoot = runCommand "wasi-sysroot" {} '' + mkdir -p "$out"/lib/wasm32-wasi + for lib in ${pkgsCross.wasi32.llvmPackages.libcxx}/lib/*; do + ln -s "$lib" "$out"/lib/wasm32-wasi + done + ''; + + firefox-l10n = fetchFromGitHub { + owner = "mozilla-l10n"; + repo = "firefox-l10n"; + rev = "cb528e0849a41c961f7c1ecb9e9604fc3167e03e"; + hash = "sha256-KQtSLDDPo6ffQwNs937cwccMasUJ/bnBFjY4LxrNGFg="; + }; +in + buildStdenv.mkDerivation rec { + pname = "zen-browser-unwrapped"; + version = "1.0.1-a.7"; + + src = fetchFromGitHub { + owner = "zen-browser"; + repo = "desktop"; + rev = "2345563879de10bec3f94ad60408f63e7d2e5780"; + leaveDotGit = true; + fetchSubmodules = true; + hash = lib.fakeHash; + }; + + firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version; + firefoxSrc = fetchurl { + url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz"; + hash = "sha256-AnIloemwdPAHLiLHJkzyew0jZMZ1w8qBGqbCX7Abn3A="; + }; + + SURFER_COMPAT = generic; + + nativeBuildInputs = + [ + autoconf + cargo + git + gnum4 + llvmPackagesBuildBuild.bintools + makeWrapper + nasm + nodejs + pkg-config + python3 + rsync + rust-cbindgen + rustPlatform.bindgenHook + rustc + surfer + unzip + wrapGAppsHook3 + lib.custom.pkgs-unstable.xorg.xvfb + ] + ++ lib.optionals crashreporterSupport [ + dump_syms + patchelf + ]; + + buildInputs = + [ + atk + cairo + cups + dbus + dbus-glib + ffmpeg + fontconfig + freetype + gdk-pixbuf + gtk3 + glib + icu73 + libGL + libGLU + libevent + libffi + libglvnd + libjpeg + libnotify + libpng + libstartup_notification + libva + libvpx + libwebp + libxml2 + mesa + nspr + nss_latest + pango + pciutils + pipewire + udev + xcb-util-cursor + xorg.libX11 + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXft + xorg.libXi + xorg.libXrender + xorg.libXt + xorg.libXtst + xorg.pixman + xorg.xorgproto + xorg.libxcb + xorg.libXrandr + xorg.libXcomposite + xorg.libXfixes + xorg.libXScrnSaver + zlib + ] + ++ lib.optional alsaSupport alsa-lib + ++ lib.optional jackSupport libjack2 + ++ lib.optional pulseaudioSupport libpulseaudio + ++ lib.optional sndioSupport sndio + ++ lib.optional gssSupport libkrb5 + ++ lib.optional jemallocSupport jemalloc + ++ lib.optionals waylandSupport [ + libdrm + libxkbcommon + ]; + + configureScript = writeShellScript "configureMozconfig" '' + for flag in $@; do + echo "ac_add_options $flag" >> mozconfig + done + ''; + + configureFlags = + [ + "--disable-bootstrap" + "--disable-updater" + "--enable-default-toolkit=cairo-gtk3${lib.optionalString waylandSupport "-wayland"}" + "--enable-system-pixman" + "--with-distribution-id=org.nixos" + "--with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib" + "--with-system-ffi" + "--with-system-icu" + "--with-system-jpeg" + "--with-system-libevent" + "--with-system-libvpx" + "--with-system-nspr" + "--with-system-nss" + "--with-system-png" # needs APNG support + "--with-system-webp" + "--with-system-zlib" + "--with-wasi-sysroot=${wasiSysRoot}" + "--host=${buildStdenv.buildPlatform.config}" + "--target=${buildStdenv.hostPlatform.config}" + ] + ++ [ + (lib.enableFeature alsaSupport "alsa") + (lib.enableFeature ffmpegSupport "ffmpeg") + (lib.enableFeature geolocationSupport "necko-wifi") + (lib.enableFeature gssSupport "negotiateauth") + (lib.enableFeature jackSupport "jack") + (lib.enableFeature jemallocSupport "jemalloc") + (lib.enableFeature pulseaudioSupport "pulseaudio") + (lib.enableFeature sndioSupport "sndio") + (lib.enableFeature webrtcSupport "webrtc") + # --enable-release adds -ffunction-sections & LTO that require a big amount + # of RAM, and the 32-bit memory space cannot handle that linking + (lib.enableFeature (!debugBuild && !stdenv.hostPlatform.is32bit) "release") + (lib.enableFeature enableDebugSymbols "debug-symbols") + ]; + + preConfigure = '' + export LLVM_PROFDATA=llvm-profdata + export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system + export WASM_CC=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}cc + export WASM_CXX=${pkgsCross.wasi32.stdenv.cc}/bin/${pkgsCross.wasi32.stdenv.cc.targetPrefix}c++ + export ZEN_RELEASE=1 + surfer ci --brand alpha --display-version ${version} + export HOME="$TMPDIR" + git config --global user.email "nixbld@localhost" + git config --global user.name "nixbld" + install -D ${firefoxSrc} .surfer/engine/firefox-${firefoxVersion}.source.tar.xz + surfer download + surfer import + patchShebangs engine/mach engine/build engine/tools + ''; + + preBuild = '' + cp -r ${firefox-l10n} l10n/firefox-l10n + for lang in $(cat ./l10n/supported-languages); do + rsync -av --progress l10n/firefox-l10n/"$lang"/ l10n/"$lang" --exclude .git + done + sh scripts/copy-language-pack.sh en-US + for lang in $(cat ./l10n/supported-languages); do + sh scripts/copy-language-pack.sh "$lang" + done + Xvfb :2 -screen 0 1024x768x24 & + export DISPLAY=:2 + ''; + + buildPhase = '' + runHook preBuild + surfer build + runHook postBuild + ''; + + preInstall = '' + cd engine/obj-* + ''; + + meta = { + mainProgram = "zen"; + description = "Firefox based browser with a focus on privacy and customization"; + homepage = "https://www.zen-browser.app/"; + license = lib.licenses.mpl20; + maintainers = with lib.maintainers; [matthewpi]; + platforms = lib.platforms.unix; + }; + + enableParallelBuilding = true; + requiredSystemFeatures = ["big-parallel"]; + + passthru = { + binaryName = meta.mainProgram; + inherit alsaSupport; + inherit jackSupport; + inherit pipewireSupport; + inherit sndioSupport; + inherit nspr; + inherit ffmpegSupport; + inherit gssSupport; + inherit gtk3; + inherit wasiSysRoot; + }; + } diff --git a/packages/zen-browser-unwrapped/surfer-dont-check-update.patch b/packages/zen-browser-unwrapped/surfer-dont-check-update.patch new file mode 100644 index 0000000..355e7c9 --- /dev/null +++ b/packages/zen-browser-unwrapped/surfer-dont-check-update.patch @@ -0,0 +1,19 @@ +diff --git a/src/index.ts b/src/index.ts +index 3d41389..f6bfb95 100644 +--- a/src/index.ts ++++ b/src/index.ts +@@ -19,7 +19,6 @@ import { resolve } from 'node:path' + import { errorHandler, config as configInited, versionFormatter } from './utils' + import { commands } from './cmds' + import { BIN_NAME, ENGINE_DIR } from './constants' +-import { updateCheck } from './middleware/update-check' + import { registerCommand } from './middleware/register-command' + import { log } from './log' + +@@ -83,7 +82,6 @@ async function middleware(command: commander.Command) { + // If the program is verbose, store that fact within the logger + log.isDebug = program.opts().verbose + +- await updateCheck() + registerCommand(command.name()) + } diff --git a/packages/zen-browser/default.nix b/packages/zen-browser/default.nix index 0281d8c..91c71fb 100644 --- a/packages/zen-browser/default.nix +++ b/packages/zen-browser/default.nix @@ -1,95 +1,8 @@ { - pkgs ? import {}, - lib, -}: let + wrapFirefox, + custom, +}: +wrapFirefox custom.zen-browser-unwrapped { pname = "zen-browser"; - version = "1.0.1-a.5"; - - runtimeLibs = with pkgs; - [ - libGL - libGLU - libevent - libffi - libjpeg - libpng - libstartup_notification - libvpx - libwebp - stdenv.cc.cc - fontconfig - libxkbcommon - zlib - freetype - gtk3 - libxml2 - dbus - xcb-util-cursor - alsa-lib - libpulseaudio - pango - atk - cairo - gdk-pixbuf - glib - udev - libva - mesa - libnotify - cups - pciutils - ffmpeg - libglvnd - pipewire - ] - ++ (with pkgs.xorg; [ - libxcb - libX11 - libXcursor - libXrandr - libXi - libXext - libXcomposite - libXdamage - libXfixes - libXScrnSaver - ]); -in - pkgs.stdenv.mkDerivation { - inherit version pname; - - src = builtins.fetchTarball { - url = "https://github.com/zen-browser/desktop/releases/download/${version}/zen.linux-specific.tar.bz2"; - sha256 = "sha256:0rj8x0b7vnl6zj8mky9qip54l1cp8rpy0465gr28zsjnjhp7qyak"; - }; - - desktopSrc = ./.; - - phases = ["installPhase" "fixupPhase"]; - - nativeBuildInputs = [pkgs.makeWrapper pkgs.copyDesktopItems pkgs.wrapGAppsHook]; - - installPhase = '' - mkdir -p $out/bin && cp -r $src/* $out/bin - install -D $desktopSrc/zen.desktop $out/share/applications/zen.desktop - install -D $src/browser/chrome/icons/default/default128.png $out/share/icons/hicolor/128x128/apps/zen.png - ''; - - fixupPhase = '' - chmod 755 $out/bin/* - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen - wrapProgram $out/bin/zen --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" \ - --set MOZ_LEGACY_PROFILES 1 --set MOZ_ALLOW_DOWNGRADE 1 --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/zen-bin - wrapProgram $out/bin/zen-bin --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" \ - --set MOZ_LEGACY_PROFILES 1 --set MOZ_ALLOW_DOWNGRADE 1 --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/glxtest - wrapProgram $out/bin/glxtest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/updater - wrapProgram $out/bin/updater --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/bin/vaapitest - wrapProgram $out/bin/vaapitest --set LD_LIBRARY_PATH "${pkgs.lib.makeLibraryPath runtimeLibs}" - ''; - - meta.mainProgram = "zen"; - } + libName = "zen"; +} diff --git a/packages/zen-browser/zen.desktop b/packages/zen-browser/zen.desktop deleted file mode 100644 index df5b81a..0000000 --- a/packages/zen-browser/zen.desktop +++ /dev/null @@ -1,25 +0,0 @@ -[Desktop Entry] -Name=Zen Browser -Exec=zen %u -Icon=zen -Type=Application -MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;application/x-xpinstall;application/pdf;application/json; -StartupWMClass=zen-alpha -Categories=Network;WebBrowser; -StartupNotify=true -Terminal=false -X-MultipleArgs=false -Keywords=Internet;WWW;Browser;Web;Explorer; -Actions=new-window;new-private-window;profilemanager; - -[Desktop Action new-window] -Name=Open a New Window -Exec=zen %u - -[Desktop Action new-private-window] -Name=Open a New Private Window -Exec=zen --private-window %u - -[Desktop Action profilemanager] -Name=Open the Profile Manager -Exec=zen --ProfileManager %u