Open BlueFox1616 opened 3 months ago
I've tried to write a package for it based on the package for the floorp browser, but it's not working for some reason. I get this error:
> Running phase: patchPhase
> applying patch /nix/store/9lx1746yy56pn3dpc35l1xr6l3lykbin-env_var_for_system_dir-ff111.patch
> patching file toolkit/xre/nsXREDirProvider.cpp
> applying patch /nix/store/6wsdh6246xbmlv3jr5q7qpl9ay3acq04-no-buildconfig-ffx121.patch
> patching file docshell/base/nsAboutRedirector.cpp
> Hunk #1 succeeded at 73 (offset -15 lines).
> patching file toolkit/content/jar.mn
> Hunk #1 FAILED at 41.
> 1 out of 1 hunk FAILED -- saving rejects to file toolkit/content/jar.mn.rej
This is my first time packaging something so I don't really know how to fix it
toolkit/content/jar.mn
doesnt exist
bumping this
bumping this
bumping
bumping
This is what I got thus far
...
00:00:06 checking cargo version... 1.77.1
00:00:06 checking for rust host triplet... x86_64-unknown-linux-gnu
00:00:06 checking for rust target triplet... x86_64-unknown-linux-gnu
00:00:06 checking for rustdoc... /nix/store/p8nr5crc52shb4n5b1z266z0g674239g-rustc-wrapper-1.77.2/bin/rustdoc
00:00:06 checking for cbindgen... /nix/store/07i7asifw6pp4a4fgmmxgq8a7r78bfyh-rust-cbindgen-0.26.0/bin/cbindgen
00:00:06 checking for rustfmt... not found
00:00:06 checking for clang for bindgen... /nix/store/v78293y2wi2kyxb93hp30k0ra9r77amf-clang-wrapper-17.0.6/bin/clang++
00:00:06 checking for libclang for bindgen... not found
00:00:06 ERROR: Could not find libclang to generate rust bindings for C/C++. Please install the necessary packages, run `mach bootstrap`, or use --with-libclang-path to give the path containing it.
00:00:06 W Exception when writing resource usage file: [Errno 2] No such file or directory: '/home/me/code/desktop/engine/obj-x86_64-pc-linux-gnu/.mozbuild/profile_build_resources.json'
00:00:07 Config object not found by mach.
00:00:07 *** Fix above errors and then restart with "./mach build"
let
pkgs = import <nixpkgs> { };
# I don't know if it needs gcc
in pkgs.mkShell {
nativeBuildInputs = with pkgs; [
# TODO: Install from cargo? Or use this instead?
rust-cbindgen
# TODO: Install from cargo? Or use this instead?
rust-bindgen
alsa-lib
cargo
clang
gcc
libpulseaudio
libclang
llvm
pkg-config
python3
rustc
];
}
Maybe someone with experience building with Firefox could help it out on this one
Isn't there a firefox builder? Just looking at the Floorp expression they didn't use mkshell
Building this doesn't seem to be the same as building other firefox forks, since it uses surfer to automate building.
Meanwhile to avoid the flatpak I have this flake that uses the binary release while a proper build works: https://github.com/MarceColl/zen-browser-flake
bumping
Meanwhile to avoid the flatpak I have this flake that uses the binary release while a proper build works: https://github.com/MarceColl/zen-browser-flake
Is there anyway you could make it for the generic version too?
I spent some time tinkering with this only to later realize Firefox itself doesn't build on aarch64-darwin
(my current machine) via nixpkgs.
{
lib,
stdenv,
fetchFromGitHub,
buildNpmPackage,
vips,
pkg-config,
fetchurl,
gnutar,
git,
}: let
firefoxVersion = "129.0.2";
firefoxSrc = fetchurl {
url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz";
hash = "sha512-9oBah+XLTkN1g5FuPsGzEtxz7sX8Bs56A4sTvXxoJ7GM84PDBkXZZiPOQWdTUfMCPsa5+J1nbxyImZTq558sEw==";
};
in
buildNpmPackage rec {
pname = "zen-browser";
version = "1.0.0-a.26";
src = fetchFromGitHub {
owner = "zen-browser";
repo = "desktop";
rev = version;
hash = "sha256-SFLleJXchumnA28eYjSkMlFMqngoH8bp02q2WkGlYas=";
fetchSubmodules = true;
};
nativeBuildInputs = [git pkg-config];
buildInputs = [vips gnutar];
patches = [./changes.patch];
preBuild = ''
patch node_modules/@zen-browser/surfer/dist/utils/version.js < ${./dist_utils_version.js.patch}
patch node_modules/@zen-browser/surfer/dist/commands/download/firefox.js < ${./dist_commands_download_firefox.js.patch}
# put the firefox source in the right place (.surfer/engine)
mkdir -p .surfer/engine
cp -r ${firefoxSrc} .surfer/engine/firefox-${firefoxVersion}.source.tar.xz
npm run init
'';
makeCacheWritable = true;
npmDepsHash = "sha256-AxGh/MC8Kw2SHw4wYOTyZjmC1q+hemPxSJZkjWNrYbo=";
meta = with lib; {
description = "Experience tranquillity while browsing the web without people tracking you";
homepage = "https://github.com/zen-browser/desktop";
license = licenses.mpl20;
maintainers = with maintainers; [];
mainProgram = "zen-browser";
platforms = platforms.all;
};
}
The main issue with this package is that it depends on @zen-browser/surfer
which does the main heavy-lifting of downloading various things via Javascript.
I think there are two approaches we can take here to build this from source.
Patch aggressively inside the @zen-browser/surfer
to replace all network calls with FODs, but still using their build pattern and scripts. Not sure if this can work, and how much effort it is going to be to make everything compatible with Nix.
Utilizing buildMozillaMach
to essentially replace what surfer
does, but I am not sure how feasible this is.
Meanwhile to avoid the flatpak I have this flake that uses the binary release while a proper build works: https://github.com/MarceColl/zen-browser-flake
Is there anyway you could make it for the generic version too?
@chaezwav I've pushed an update that adds the generic version, you can find more information in the README. Let me know if it works for you and if not feel free to open an issue in the repo.
@MarceColl It built properly and works fine. Thank you!
@dit7ya I'm trying to pickup where you left off, what are the patches that you have in your derivation?
I will look into trying to make this work, but I won't maintain it.
@Eveeifyeve I would. I'm also working on this. My biggest problem is getting it to work with the firefox wrapper for extensions etc.
I pretty much know nixpkgs so this shouldn't be hard. The only hard part is patching some things.
@Eveeifyeve I would be willing to maintain it too.
How are you trying to go about this? Are you trying to use buildMachMozilla
, or are you compiling this using surfer as does upstream, then patching things manually?
@Eveeifyeve I would be willing to maintain it too.
How are you trying to go about this? Are you trying to use
buildMachMozilla
, or are you compiling this using surfer as does upstream, then patching things manually?
Trying to use buildMachMozilla
.
I will work on this tmr as it's 1am for me.
@Eveeifyeve Do you have your work on some public repo? I can pick this up when I have some time later today.
bumping
@Eveeifyeve Do you have your work on some public repo? I can pick this up when I have some time later today.
I can publish some changes to a repo today so you can pickup from.
Hey I don't think it's possible to do buildMachMozilla
as it contains it's own cli aka surfer
to build and grab Firefox source and build it with patches applied using npm
scripts. We have to patch some stuff with their surfer cli as their build proccess uses surfer to grab source of firefox, so this has to be a buildNpmPackage
which also allows for the package to work on linux & darwin.
Also it doesn't include files needed to be a buildMachMozilla
like take a look at librewolf
and floop
browser as an example it doesn't contain files like moz.config and etc.
So summary buildMachMozzila
doesn't give stuff that we need for zen-browser
.
I am trying to get a working on a version that hopefully should work both Darwin & Linux over here.
also @dit7ya can you please provide the patch files?
Hey I don't think it's possible to do
buildMachMozilla
as it contains it's own cli akasurfer
to build and grab Firefox source and build it with patches applied usingnpm
scripts. We have to patch some stuff with their surfer cli as their build proccess uses surfer to grab source of firefox, so this has to be abuildNpmPackage
which also allows for the package to work on linux & darwin.Also it doesn't include files needed to be a
buildMachMozilla
like take a look atlibrewolf
andfloop
browser as an example it doesn't contain files like moz.config and etc.So summary
buildMachMozzila
doesn't give stuff that we need forzen-browser
.I am trying to get a working on a version that hopefully should work both Darwin & Linux over here.
also @dit7ya can you please provide the patch files?
Useful Links:
Surfer CLI Github:
- https://github.com/zen-browser/surfer/blob/main/src/commands/download/firefox.ts
- https://github.com/zen-browser/surfer/blob/main/src/utils/version.ts
- https://github.com/zen-browser/surfer/blob/main/src/utils/config.ts
Surfer CLI Source Code (NPM): https://www.npmjs.com/package/@zen-browser/surfer?activeTab=code
- Look in dist/commands/download/firefox.js
- Look in dist/utils/version.js
I mean you could do an mkdirevation and use pnpm which is what the project maintainers use.
This is my try at the binary package: https://github.com/MordragT/nixos/blob/master/pkgs/by-name/zen-browser-bin/default.nix Dont know if this is common knowledge but the MOZ_LEGACY_PROFILES=1 environmental variable must be set so that you can declaratively change settings and install extensions like here: https://github.com/MordragT/nixos/blob/master/home/modules/programs/zen-browser.nix
Edit: Just for clarification, the firefoxAddons namespace is my own namespace so you will have to provide your own extensions and cannot just copy the homeManager module.
@Eveeifyeve These are the patches, but these were very much hacky just to move forward, and most likely won't be relevant in the final derivation.
pkgs/by-name/ze/zen-browser/dist_commands_download_firefox.js.patch
--- node_modules/@zen-browser/surfer/dist/commands/download/firefox.js 2024-08-22 02:42:02
+++ dist_commands_download_firefox.js 2024-08-22 03:50:55
@@ -43,14 +43,6 @@
//
// If BSD tar adds --transform support in the future, we can use that
// instead
- if (process.platform == 'darwin') {
- // GNU Tar doesn't come preinstalled on any MacOS machines, so we need to
- // check for it and ask for the user to install it if necessary
- if (!(0, command_exists_1.commandExistsSync)('gtar')) {
- throw new Error(`GNU Tar is required to extract Firefox's source on MacOS. Please install it using the command |brew install gnu-tar| and try again`);
- }
- tarExec = 'gtar';
- }
log_1.log.info(`Unpacking ${(0, node_path_1.resolve)(constants_1.MELON_TMP_DIR, name)} to ${constants_1.ENGINE_DIR}`);
if (process.platform === 'win32') {
log_1.log.info('Unpacking Firefox source on Windows (7z)');
pkgs/by-name/ze/zen-browser/changes.patch
diff --git a/package-lock.json b/package-lock.json
index b26661e..63bf445 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "ISC",
"dependencies": {
- "@zen-browser/surfer": "^1.2.9"
+ "@zen-browser/surfer": "^1.2.14"
}
},
"node_modules/@oozcitak/dom": {
@@ -264,9 +264,9 @@
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
},
"node_modules/@zen-browser/surfer": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.9.tgz",
- "integrity": "sha512-XDEG80YOiQd0kl0PX0WzdYDwdOJ5hhrU0bcohBeK68my3nOXTIiuM26FXh3/2+feNzr/Of7Y6Qfmmdf0YCAvgw==",
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.14.tgz",
+ "integrity": "sha512-v83Iig29BUsVlMfMDER+y99DMDf2lD9IXnXuWAfLEE02AAYugYpTYu1tZ5aUffpLjZqCj46GUH8xdSUmUZQxzA==",
"dependencies": {
"@resvg/resvg-js": "^1.4.0",
"async-icns": "^1.0.2",
@@ -2097,9 +2097,9 @@
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
},
"@zen-browser/surfer": {
- "version": "1.2.9",
- "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.9.tgz",
- "integrity": "sha512-XDEG80YOiQd0kl0PX0WzdYDwdOJ5hhrU0bcohBeK68my3nOXTIiuM26FXh3/2+feNzr/Of7Y6Qfmmdf0YCAvgw==",
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.14.tgz",
+ "integrity": "sha512-v83Iig29BUsVlMfMDER+y99DMDf2lD9IXnXuWAfLEE02AAYugYpTYu1tZ5aUffpLjZqCj46GUH8xdSUmUZQxzA==",
"requires": {
"@resvg/resvg-js": "^1.4.0",
"async-icns": "^1.0.2",
pkgs/by-name/ze/zen-browser/dist_utils_version.js.patch
--- node_modules/@zen-browser/surfer/dist/utils/version.js 2024-08-22 02:42:02
+++ dist_utils_version.js 2024-08-22 02:44:55
@@ -17,10 +17,28 @@
"${config_1.SupportedProducts.FirefoxESR}": "FIREFOX_ESR",
"${config_1.SupportedProducts.FirefoxNightly}": "FIREFOX_NIGHTLY"
}`);
+const staticData = {
+ "FIREFOX_AURORA": "",
+ "FIREFOX_DEVEDITION": "130.0b8",
+ "FIREFOX_ESR": "115.14.0esr",
+ "FIREFOX_ESR_NEXT": "128.1.0esr",
+ "FIREFOX_NIGHTLY": "131.0a1",
+ "LAST_MERGE_DATE": "2024-08-05",
+ "LAST_RELEASE_DATE": "2024-08-06",
+ "LAST_SOFTFREEZE_DATE": "2024-08-01",
+ "LAST_STRINGFREEZE_DATE": "2024-08-02",
+ "LATEST_FIREFOX_DEVEL_VERSION": "130.0b8",
+ "LATEST_FIREFOX_OLDER_VERSION": "3.6.28",
+ "LATEST_FIREFOX_RELEASED_DEVEL_VERSION": "130.0b8",
+ "LATEST_FIREFOX_VERSION": "129.0.2",
+ "NEXT_MERGE_DATE": "2024-09-02",
+ "NEXT_RELEASE_DATE": "2024-09-03",
+ "NEXT_SOFTFREEZE_DATE": "2024-08-29",
+ "NEXT_STRINGFREEZE_DATE": "2024-08-30"
+};
const getLatestFF = async (product = config_1.SupportedProducts.Firefox) => {
try {
- const { data } = await axios_1.default.get('https://product-details.mozilla.org/1.0/firefox_versions.json');
- return data[firefoxTargets[product]];
+ return staticData[firefoxTargets[product]];
}
catch (error) {
log_1.log.warning('Failed to get latest firefox version with error:');
@Eveeifyeve These are the patches, but these were very much hacky just to move forward, and most likely won't be relevant in the final derivation.
pkgs/by-name/ze/zen-browser/dist_commands_download_firefox.js.patch
--- node_modules/@zen-browser/surfer/dist/commands/download/firefox.js 2024-08-22 02:42:02 +++ dist_commands_download_firefox.js 2024-08-22 03:50:55 @@ -43,14 +43,6 @@ // // If BSD tar adds --transform support in the future, we can use that // instead - if (process.platform == 'darwin') { - // GNU Tar doesn't come preinstalled on any MacOS machines, so we need to - // check for it and ask for the user to install it if necessary - if (!(0, command_exists_1.commandExistsSync)('gtar')) { - throw new Error(`GNU Tar is required to extract Firefox's source on MacOS. Please install it using the command |brew install gnu-tar| and try again`); - } - tarExec = 'gtar'; - } log_1.log.info(`Unpacking ${(0, node_path_1.resolve)(constants_1.MELON_TMP_DIR, name)} to ${constants_1.ENGINE_DIR}`); if (process.platform === 'win32') { log_1.log.info('Unpacking Firefox source on Windows (7z)');
pkgs/by-name/ze/zen-browser/changes.patch
diff --git a/package-lock.json b/package-lock.json index b26661e..63bf445 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@zen-browser/surfer": "^1.2.9" + "@zen-browser/surfer": "^1.2.14" } }, "node_modules/@oozcitak/dom": { @@ -264,9 +264,9 @@ "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "node_modules/@zen-browser/surfer": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.9.tgz", - "integrity": "sha512-XDEG80YOiQd0kl0PX0WzdYDwdOJ5hhrU0bcohBeK68my3nOXTIiuM26FXh3/2+feNzr/Of7Y6Qfmmdf0YCAvgw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.14.tgz", + "integrity": "sha512-v83Iig29BUsVlMfMDER+y99DMDf2lD9IXnXuWAfLEE02AAYugYpTYu1tZ5aUffpLjZqCj46GUH8xdSUmUZQxzA==", "dependencies": { "@resvg/resvg-js": "^1.4.0", "async-icns": "^1.0.2", @@ -2097,9 +2097,9 @@ "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" }, "@zen-browser/surfer": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.9.tgz", - "integrity": "sha512-XDEG80YOiQd0kl0PX0WzdYDwdOJ5hhrU0bcohBeK68my3nOXTIiuM26FXh3/2+feNzr/Of7Y6Qfmmdf0YCAvgw==", + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.2.14.tgz", + "integrity": "sha512-v83Iig29BUsVlMfMDER+y99DMDf2lD9IXnXuWAfLEE02AAYugYpTYu1tZ5aUffpLjZqCj46GUH8xdSUmUZQxzA==", "requires": { "@resvg/resvg-js": "^1.4.0", "async-icns": "^1.0.2",
pkgs/by-name/ze/zen-browser/dist_utils_version.js.patch
--- node_modules/@zen-browser/surfer/dist/utils/version.js 2024-08-22 02:42:02 +++ dist_utils_version.js 2024-08-22 02:44:55 @@ -17,10 +17,28 @@ "${config_1.SupportedProducts.FirefoxESR}": "FIREFOX_ESR", "${config_1.SupportedProducts.FirefoxNightly}": "FIREFOX_NIGHTLY" }`); +const staticData = { + "FIREFOX_AURORA": "", + "FIREFOX_DEVEDITION": "130.0b8", + "FIREFOX_ESR": "115.14.0esr", + "FIREFOX_ESR_NEXT": "128.1.0esr", + "FIREFOX_NIGHTLY": "131.0a1", + "LAST_MERGE_DATE": "2024-08-05", + "LAST_RELEASE_DATE": "2024-08-06", + "LAST_SOFTFREEZE_DATE": "2024-08-01", + "LAST_STRINGFREEZE_DATE": "2024-08-02", + "LATEST_FIREFOX_DEVEL_VERSION": "130.0b8", + "LATEST_FIREFOX_OLDER_VERSION": "3.6.28", + "LATEST_FIREFOX_RELEASED_DEVEL_VERSION": "130.0b8", + "LATEST_FIREFOX_VERSION": "129.0.2", + "NEXT_MERGE_DATE": "2024-09-02", + "NEXT_RELEASE_DATE": "2024-09-03", + "NEXT_SOFTFREEZE_DATE": "2024-08-29", + "NEXT_STRINGFREEZE_DATE": "2024-08-30" +}; const getLatestFF = async (product = config_1.SupportedProducts.Firefox) => { try { - const { data } = await axios_1.default.get('https://product-details.mozilla.org/1.0/firefox_versions.json'); - return data[firefoxTargets[product]]; + return staticData[firefoxTargets[product]]; } catch (error) { log_1.log.warning('Failed to get latest firefox version with error:');
Well I just wanted to make sure if there is any use in the final derivation.
Anyone else have the issue where the "add theme" button on the zen browser site does nothing when installing zen via the flake?
Go get help with the flake's author, not here.
Hey I have ran into a problem as surfer is a required cli for zen which means 2 packages will need to be on nixpkgs. One surfer their cli, Two the browser.
Hey I have done my best I could for now but if someone can give a package of the surfer cli then I can continue. Btw it uses pnpm instead of npm.
{lib, stdenv, pnpm, nodejs, fetchurl, fetchFromGitHub}:
let
firefox-version = "129.0.2";
firefox-src = fetchurl {
url = "mirror://mozilla/firefox/releases/${firefox-version}/source/firefox-${firefox-version}.source.tar.xz";
hash = "sha512-9oBah+XLTkN1g5FuPsGzEtxz7sX8Bs56A4sTvXxoJ7GM84PDBkXZZiPOQWdTUfMCPsa5+J1nbxyImZTq558sEw==";
};
in
stdenv.mkDerivation rec {
pname = "zen-browser";
version = "1.0.0-a.32";
nativeBuildInputs = [
pnpm.configHook
nodejs
];
src = fetchFromGitHub {
owner = "zen-browser";
repo = "desktop";
rev = version;
hash = "sha256-ryN+Ca0IIybnGWnlSCkstnYBfahvsU/XwR8V0VSB6KA=";
fetchSubmodules = true;
};
pnpmDeps = pnpm.fetchDeps {
pname = "${pname}-pnpm-deps";
inherit src version;
hash = "sha256-gVKWHxzCY89n2CJRCA2f5vlgmHSYgRsCK8sWKCLf5Hk=";
};
# Provides Firefox source required to build
preBuild = ''
mkdir -p .surfer/engine
cp -r ${firefox-src} .surfer/engine/firefox-${firefox-version}.source.tar.xz
pnpm run bootstrap && pnpm run import
'';
buildPhase = ''
#TODO: Lanaguage Pack support
# Build language Packs
# Build Zen Browser
pnpm build
'';
installPhase = ''
#TODO: Find out where zen builds to.
'';
meta = with lib; {
description = "A browser for the future";
homepage = "";
license = licenses.mpl20;
platforms = platforms.all;
};
}
just to note I just provided an example meta. When the package get's released it will be actual meta.
@Eveeifyeve Awesome work! Is there an open issue to reference for surfer cli?
bumping this
I was able to build surfer
by itself, which we can use in the main package:
{
lib,
buildNpmPackage,
fetchFromGitHub,
}:
buildNpmPackage {
pname = "zen-surfer";
version = "unstable-2024-08-26";
src = fetchFromGitHub {
owner = "zen-browser";
repo = "surfer";
rev = "22efae264dcba0afc36426c1b26f2be8f121848b";
hash = "sha256-5hXOaEchXpaEu6wft/lGZPBHPYklyTQamDKUs81E3p8=";
};
# To fix `npm ERR! Your cache folder contains root-owned files`
makeCacheWritable = true;
npmDepsHash = "sha256-NGeaxU1LlrmOicL7NeeccXKvGg8pOc/W77e9lrhcx+c=";
npmFlags = [ "--ignore-scripts" ];
meta = {
description = "Simplifying building firefox forks";
homepage = "https://github.com/zen-browser/surfer";
license = lib.licenses.mpl20;
maintainers = [ ];
mainProgram = "surfer";
platforms = lib.platforms.all;
};
}
I was able to build
surfer
by itself, which we can use in the main package:{ lib, buildNpmPackage, fetchFromGitHub, }: buildNpmPackage { pname = "zen-surfer"; version = "unstable-2024-08-26"; src = fetchFromGitHub { owner = "zen-browser"; repo = "surfer"; rev = "22efae264dcba0afc36426c1b26f2be8f121848b"; hash = "sha256-5hXOaEchXpaEu6wft/lGZPBHPYklyTQamDKUs81E3p8="; }; # To fix `npm ERR! Your cache folder contains root-owned files` makeCacheWritable = true; npmDepsHash = "sha256-NGeaxU1LlrmOicL7NeeccXKvGg8pOc/W77e9lrhcx+c="; npmFlags = [ "--ignore-scripts" ]; meta = { description = "Simplifying building firefox forks"; homepage = "https://github.com/zen-browser/surfer"; license = lib.licenses.mpl20; maintainers = [ ]; mainProgram = "surfer"; platforms = lib.platforms.all; }; }
I will try this to see if I can get it working.
@Eveeifyeve Awesome work! Is there an open issue to reference for surfer cli?
I will open an issue in my repo to reference the cli.
I was able to build
surfer
by itself, which we can use in the main package:{ lib, buildNpmPackage, fetchFromGitHub, }: buildNpmPackage { pname = "zen-surfer"; version = "unstable-2024-08-26"; src = fetchFromGitHub { owner = "zen-browser"; repo = "surfer"; rev = "22efae264dcba0afc36426c1b26f2be8f121848b"; hash = "sha256-5hXOaEchXpaEu6wft/lGZPBHPYklyTQamDKUs81E3p8="; }; # To fix `npm ERR! Your cache folder contains root-owned files` makeCacheWritable = true; npmDepsHash = "sha256-NGeaxU1LlrmOicL7NeeccXKvGg8pOc/W77e9lrhcx+c="; npmFlags = [ "--ignore-scripts" ]; meta = { description = "Simplifying building firefox forks"; homepage = "https://github.com/zen-browser/surfer"; license = lib.licenses.mpl20; maintainers = [ ]; mainProgram = "surfer"; platforms = lib.platforms.all; }; }
I will improve the package like meta to include with lib and such and such.
Hi, I'm working on it too. This is my drv:
{
lib,
buildNpmPackage,
buildPackages,
fetchFromGitHub,
fetchurl,
overrideCC,
# build time
autoconf,
cargo,
git,
gnum4,
nodejs,
perl,
pkg-config,
pkgsBuildBuild,
pkgsCross,
python3,
runCommand,
rustc,
rust-cbindgen,
rustPlatform,
unzip,
vips,
which,
wrapGAppsHook3,
# runtime
alsa-lib,
bzip2,
dbus,
dbus-glib,
file,
fontconfig,
freetype,
glib,
gtk3,
icu73,
libGL,
libGLU,
libdrm,
libevent,
libffi,
libjpeg,
libpng,
libpulseaudio,
libstartup_notification,
libvpx,
libwebp,
libxkbcommon,
nasm,
nspr,
nss_latest,
pango,
xorg,
zip,
zlib,
generic ? false,
}:
let
surfer = buildNpmPackage {
pname = "surfer";
version = "1.3.5";
src = fetchFromGitHub {
owner = "zen-browser";
repo = "surfer";
rev = "22efae264dcba0afc36426c1b26f2be8f121848b";
hash = "sha256-5hXOaEchXpaEu6wft/lGZPBHPYklyTQamDKUs81E3p8=";
};
patches = [ ./surfer-dont-check-update.patch ];
npmDepsHash = "sha256-NGeaxU1LlrmOicL7NeeccXKvGg8pOc/W77e9lrhcx+c=";
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
'';
mozconfig = ''
ac_add_options --disable-bootstrap
ac_add_options --with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib
ac_add_options --with-wasi-sysroot=${wasiSysRoot}
'';
in
buildStdenv.mkDerivation rec {
pname = "zen-browser";
version = "1.0.0-a.32";
src = fetchFromGitHub {
owner = "zen-browser";
repo = "desktop";
rev = version;
leaveDotGit = true;
hash = "sha256-4UZqJTH+HJ8UCl2FbaapTCEYMD47VjOCzEmNzrn/Q/E=";
};
firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version;
firefoxSrc = fetchurl {
url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz";
hash = "sha256-NaHaEhr0dIM9AT7Lwfd6pVuzVnj+BtQ4hC0yDfqz80Q=";
};
SURFER_COMPAT = generic;
ZEN_RELEASE = true;
nativeBuildInputs = [
autoconf
cargo
git
gnum4
llvmPackagesBuildBuild.bintools
nodejs
perl
pkg-config
python3
rust-cbindgen
rustPlatform.bindgenHook
rustc
surfer
unzip
which
wrapGAppsHook3
];
buildInputs = [
alsa-lib
bzip2
dbus
dbus-glib
file
fontconfig
freetype
glib
gtk3
icu73
libGL
libGLU
libdrm
libevent
libffi
libjpeg
libpng
libpulseaudio
libstartup_notification
libvpx
libwebp
libxkbcommon
nasm
nspr
nss_latest
pango
perl
xorg.libX11
xorg.libXcursor
xorg.libXdamage
xorg.libXext
xorg.libXft
xorg.libXi
xorg.libXrender
xorg.libXt
xorg.libXtst
xorg.pixman
xorg.xorgproto
zip
zlib
];
preConfigure = ''
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
rm -rf engine/obj-x86_64-pc-linux-gnu
patchShebangs engine/mach engine/build
'';
configurePhase = ''
runHook preConfigure
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++
echo "${mozconfig}" > mozconfig
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
surfer build
runHook postBuild
'';
preInstall = ''
cd engine/objdir
'';
meta = {
description = "Firefox based browser with a focus on privacy and customization";
homepage = "https://www.zen-browser.app/";
license = lib.licenses.mpl20;
maintainers = [ ];
mainProgram = "zen";
};
}
surfer-dont-check-update.patch
But I keep getting a compile error:
00:22:03 21:46.07 error: failed to run custom build command for `webrender v0.62.0 (/build/source/engine/gfx/wr/webrender)`
00:22:03 21:46.07 note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.
00:22:03 21:46.07 Caused by:
00:22:03 21:46.07 process didn't exit successfully: `/build/source/engine/obj-x86_64-pc-linux-gnu/instrumented/release/build/webrender-b970e3a2973cd0b8/build-script-build` (signal: 4, SIGILL: illegal instruction)
But I keep getting a compile error:
00:22:03 21:46.07 error: failed to run custom build command for `webrender v0.62.0 (/build/source/engine/gfx/wr/webrender)` 00:22:03 21:46.07 note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation. 00:22:03 21:46.07 Caused by: 00:22:03 21:46.07 process didn't exit successfully: `/build/source/engine/obj-x86_64-pc-linux-gnu/instrumented/release/build/webrender-b970e3a2973cd0b8/build-script-build` (signal: 4, SIGILL: illegal instruction)
It seems https://github.com/zen-browser/desktop/blob/1.0.0-a.32/src/gfx/wr/webrender/src/picture-rs.patch causes build failure. I'v opened an issue in Zen Browser repo: https://github.com/zen-browser/desktop/issues/1070
if the end result of this wound up working on macOS that would be great. there's currently no way to install zen via home-brew either.
@MaxistheSpy I have a working MacOS implementation here to tide you over if desired: https://github.com/heywoodlh/flakes/tree/main/zen-browser
I plan on contributing MacOS support to the very nice Zen-Browser flake mentioned earlier in this thread but haven't added it yet.
@MaxistheSpy I have a working MacOS implementation here to tide you over if desired: https://github.com/heywoodlh/flakes/tree/main/zen-browser
I plan on contributing MacOS support to the very nice Zen-Browser flake mentioned earlier in this thread but haven't added it yet.
Well I would say building from source will be better, as nix expects if you can build from source, then do it.
Hi, I'm working on it too. This is my drv:
{ lib, buildNpmPackage, buildPackages, fetchFromGitHub, fetchurl, overrideCC, # build time autoconf, cargo, git, gnum4, nodejs, perl, pkg-config, pkgsBuildBuild, pkgsCross, python3, runCommand, rustc, rust-cbindgen, rustPlatform, unzip, vips, which, wrapGAppsHook3, # runtime alsa-lib, bzip2, dbus, dbus-glib, file, fontconfig, freetype, glib, gtk3, icu73, libGL, libGLU, libdrm, libevent, libffi, libjpeg, libpng, libpulseaudio, libstartup_notification, libvpx, libwebp, libxkbcommon, nasm, nspr, nss_latest, pango, xorg, zip, zlib, generic ? false, }: let surfer = buildNpmPackage { pname = "surfer"; version = "1.3.5"; src = fetchFromGitHub { owner = "zen-browser"; repo = "surfer"; rev = "22efae264dcba0afc36426c1b26f2be8f121848b"; hash = "sha256-5hXOaEchXpaEu6wft/lGZPBHPYklyTQamDKUs81E3p8="; }; patches = [ ./surfer-dont-check-update.patch ]; npmDepsHash = "sha256-NGeaxU1LlrmOicL7NeeccXKvGg8pOc/W77e9lrhcx+c="; 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 ''; mozconfig = '' ac_add_options --disable-bootstrap ac_add_options --with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib ac_add_options --with-wasi-sysroot=${wasiSysRoot} ''; in buildStdenv.mkDerivation rec { pname = "zen-browser"; version = "1.0.0-a.32"; src = fetchFromGitHub { owner = "zen-browser"; repo = "desktop"; rev = version; leaveDotGit = true; hash = "sha256-4UZqJTH+HJ8UCl2FbaapTCEYMD47VjOCzEmNzrn/Q/E="; }; firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version; firefoxSrc = fetchurl { url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz"; hash = "sha256-NaHaEhr0dIM9AT7Lwfd6pVuzVnj+BtQ4hC0yDfqz80Q="; }; SURFER_COMPAT = generic; ZEN_RELEASE = true; nativeBuildInputs = [ autoconf cargo git gnum4 llvmPackagesBuildBuild.bintools nodejs perl pkg-config python3 rust-cbindgen rustPlatform.bindgenHook rustc surfer unzip which wrapGAppsHook3 ]; buildInputs = [ alsa-lib bzip2 dbus dbus-glib file fontconfig freetype glib gtk3 icu73 libGL libGLU libdrm libevent libffi libjpeg libpng libpulseaudio libstartup_notification libvpx libwebp libxkbcommon nasm nspr nss_latest pango perl xorg.libX11 xorg.libXcursor xorg.libXdamage xorg.libXext xorg.libXft xorg.libXi xorg.libXrender xorg.libXt xorg.libXtst xorg.pixman xorg.xorgproto zip zlib ]; preConfigure = '' 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 rm -rf engine/obj-x86_64-pc-linux-gnu patchShebangs engine/mach engine/build ''; configurePhase = '' runHook preConfigure 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++ echo "${mozconfig}" > mozconfig runHook postConfigure ''; buildPhase = '' runHook preBuild surfer build runHook postBuild ''; preInstall = '' cd engine/objdir ''; meta = { description = "Firefox based browser with a focus on privacy and customization"; homepage = "https://www.zen-browser.app/"; license = lib.licenses.mpl20; maintainers = [ ]; mainProgram = "zen"; }; }
surfer-dont-check-update.patch
But I keep getting a compile error:
00:22:03 21:46.07 error: failed to run custom build command for `webrender v0.62.0 (/build/source/engine/gfx/wr/webrender)` 00:22:03 21:46.07 note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation. 00:22:03 21:46.07 Caused by: 00:22:03 21:46.07 process didn't exit successfully: `/build/source/engine/obj-x86_64-pc-linux-gnu/instrumented/release/build/webrender-b970e3a2973cd0b8/build-script-build` (signal: 4, SIGILL: illegal instruction)
I will look into trying to solve issues with this.
Hi, im zen's creator. I just wanted to say that
runHook preConfigure 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++ echo "${mozconfig}" > mozconfig runHook postConfigure
is not being applied because it's appending to mozconfig
(that doesn't exist) and surfer build
overrides. I suggest adding it to the common/mozconfig
file... but again, I dont know anything about nix so I may be wrong
Sorry for late.
is not being applied because it's appending to
mozconfig
(that doesn't exist) andsurfer build
overrides.
It's actually applies, mozconfig
was defined at
mozconfig = ''
ac_add_options --disable-bootstrap
ac_add_options --with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib
ac_add_options --with-wasi-sysroot=${wasiSysRoot}
'';
And there is a customConfig
in Surfer's build command that reads a mozconfig
in $pwd
// Allow a custom config to be placed in /mozconfig. This will not be committed
// to origin
let customConfig = existsSync(join(process.cwd(), 'mozconfig'))
? readFileSync(join(process.cwd(), 'mozconfig')).toString()
: ''
https://github.com/zen-browser/surfer/blob/main/src/commands/build.ts#L70-L74
echo ${mozconfig} > mozconfig
will write mozconfig
to ./mozconfig
, so it works fine.
I love Zen browser can installed as Nixpkgs soon as possible. Bumping ...
I love Zen browser can installed as Nixpkgs soon as possible. Bumping ...
Well unfortunately tools like this can take a long time to be available on nixpkgs. So I don't know what your insertions are.
But I keep getting a compile error:
00:22:03 21:46.07 error: failed to run custom build command for `webrender v0.62.0 (/build/source/engine/gfx/wr/webrender)` 00:22:03 21:46.07 note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation. 00:22:03 21:46.07 Caused by: 00:22:03 21:46.07 process didn't exit successfully: `/build/source/engine/obj-x86_64-pc-linux-gnu/instrumented/release/build/webrender-b970e3a2973cd0b8/build-script-build` (signal: 4, SIGILL: illegal instruction)
It seems https://github.com/zen-browser/desktop/blob/1.0.0-a.32/src/gfx/wr/webrender/src/picture-rs.patch causes build failure. I'v opened an issue in Zen Browser repo: zen-browser/desktop#1070
Update: Error disappears once I bumped to 1.0.0-a.34. But I get into a new trouble now.
With my new drv, build will stucks with following logs:
00:26:16 console.warn: services.settings: Ignoring preference override of remote settings server
00:26:16 console.warn: services.settings: Allow by setting MOZ_REMOTE_SETTINGS_DEVTOOLS=1 in the environment
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) [GFX1-]: glxtest: libEGL missing
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) [GFX1-]: glxtest: libGL.so.1 missing
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) |[2][GFX1-]: No GPUs detected via PCI
00:26:17 (t=0.407796) [GFX1-]: No GPUs detected via PCI
00:26:17 console.error: (new TypeError("NetworkError: Network request failed", "resource://services-settings/Utils.sys.mjs", 236))
00:26:17 console.error: (new TypeError("NetworkError: Network request failed", "resource://services-settings/Utils.sys.mjs", 236))
00:26:17 JavaScript error: resource://gre/modules/ShortcutUtils.sys.mjs, line 142: TypeError: keyAttribute is null
00:26:17 console.info: "ZenThemeImporter: Initiating Zen theme importer"
00:26:17 console.info: "ZenThemeImporter: Zen theme imported"
00:26:17 console.info: "ZenWorkspaces: Initializing ZenWorkspaces..."
00:26:17 JavaScript error: chrome://browser/content/tabbrowser/tabbrowser.js, line 6115: TypeError: this.selectedBrowser is undefined
00:26:17 JavaScript error: , line 0: uncaught exception: undefined
00:26:17 JavaScript error: , line 0: uncaught exception: undefined
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: resource:///modules/sessionstore/SessionStore.sys.mjs, line 2749: TypeError: browser is undefined
00:26:17 console.info: "ZenThemeModifier: init browser layout"
00:26:17 console.info: "Zen CKS: Initializing shortcuts"
00:26:17 console.info: "Zen CKS: Shortcut changed"
00:26:17 JavaScript error: chrome://browser/content/tabbrowser/tabbrowser.js, line 6122: TypeError: this.selectedTab is undefined
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) |[2][GFX1-]: No GPUs detected via PCI
00:26:17 (t=0.407796) |[3][GFX1-]: Failed GL context creation for WebRender: 0 (t=0.94779) [GFX1-]: Failed GL context creation for WebRender: 0
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) |[2][GFX1-]: No GPUs detected via PCI
00:26:17 (t=0.407796) |[3][GFX1-]: Failed GL context creation for WebRender: 0 (t=0.94779) |[4][GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED (t=0.94779) [GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) |[2][GFX1-]: No GPUs detected via PCI
00:26:17 (t=0.407796) |[3][GFX1-]: Failed GL context creation for WebRender: 0 (t=0.94779) |[4][GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED (t=0.94779) |[5][GFX1-]: Failed to connect WebRenderBridgeChild. isParent=true (t=0.94779) [GFX1-]: Failed to connect WebRenderBridgeChild. isParent=true
00:26:17 Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libEGL missing (t=0.407796) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.407796) |[2][GFX1-]: No GPUs detected via PCI
00:26:17 (t=0.407796) |[3][GFX1-]: Failed GL context creation for WebRender: 0 (t=0.94779) |[4][GFX1-]: FEATURE_FAILURE_WEBRENDER_INITIALIZE_UNSPECIFIED (t=0.94779) |[5][GFX1-]: Failed to connect WebRenderBridgeChild. isParent=true (t=0.94779) |[6][GFX1-]: Fallback WR to SW-WR (t=0.94879) [GFX1-]: Fallback WR to SW-WR
00:26:17 JavaScript error: resource:///modules/ReportBrokenSite.sys.mjs, line 389: TypeError: tabbrowser.selectedBrowser is undefined
00:26:17 JavaScript error: chrome://browser/content/tabbrowser/tabbrowser.js, line 6115: TypeError: this.selectedBrowser is undefined
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: , line 0: TypeError: NetworkError when attempting to fetch resource.
00:26:17 JavaScript error: resource:///modules/UrlbarInput.sys.mjs, line 1987: TypeError: WeakMap key undefined must be an object
00:26:18 console.info: "ZenThemeModifier: set tabs max-height to" "378px"
It just keep stuck and doing nothing, I don't know how to deal with this yet.
Zen zen-browser
Project description
User-friendly, useful, mods that increase usability can be added from the zen-mods mod store, a customizable browser, features that can be searched for in a browser for the end user, easy to use thanks to the shortcut key assignment feature, theme-store, frequently used progressive web apps, add-on apps, websites can be easily accessed thanks to the sidebar feature, can be viewed as a mobile page. container, work spaces, zen-mods, window management by creating multiple tab sections in a window, sidebar feature.
Metadata