stuff
This commit is contained in:
parent
398faaa368
commit
470148acd3
3 changed files with 372 additions and 371 deletions
|
|
@ -1,370 +1 @@
|
||||||
{
|
{pkgs ? import <nixpkgs> {}}: {zen-browser-unwrapped = pkgs.callPackage ./package.nix {};}
|
||||||
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.10";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "zen-browser";
|
|
||||||
repo = "desktop";
|
|
||||||
rev = "${version}";
|
|
||||||
leaveDotGit = true;
|
|
||||||
fetchSubmodules = true;
|
|
||||||
hash = "sha256-JnohKvY7455qlPpcr38307DEnAWFdJF+liLBnvBSl98=";
|
|
||||||
};
|
|
||||||
|
|
||||||
firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version;
|
|
||||||
firefoxSrc = fetchurl {
|
|
||||||
url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz";
|
|
||||||
hash = "sha256-en3z+Xc3RT76okPKnbr5XQ8PgzxdyK+stXBO4W7wYNA=";
|
|
||||||
};
|
|
||||||
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
||||||
370
packages/zen-browser-unwrapped/package.nix
Normal file
370
packages/zen-browser-unwrapped/package.nix
Normal file
|
|
@ -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.10";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "zen-browser";
|
||||||
|
repo = "desktop";
|
||||||
|
rev = "${version}";
|
||||||
|
leaveDotGit = true;
|
||||||
|
fetchSubmodules = true;
|
||||||
|
hash = "sha256-JnohKvY7455qlPpcr38307DEnAWFdJF+liLBnvBSl98=";
|
||||||
|
};
|
||||||
|
|
||||||
|
firefoxVersion = (lib.importJSON "${src}/surfer.json").version.version;
|
||||||
|
firefoxSrc = fetchurl {
|
||||||
|
url = "mirror://mozilla/firefox/releases/${firefoxVersion}/source/firefox-${firefoxVersion}.source.tar.xz";
|
||||||
|
hash = "sha256-en3z+Xc3RT76okPKnbr5XQ8PgzxdyK+stXBO4W7wYNA=";
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
||||||
2
packages/zen-browser-unwrapped/update.sh
Normal file → Executable file
2
packages/zen-browser-unwrapped/update.sh
Normal file → Executable file
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
set -eou pipefail
|
set -eou pipefail
|
||||||
|
|
||||||
PACKAGE_PATH=./pkgs/by-name/ze/zen-browser-unwrapped
|
PACKAGE_PATH=.
|
||||||
PACKAGE_NIX="$PACKAGE_PATH"/package.nix
|
PACKAGE_NIX="$PACKAGE_PATH"/package.nix
|
||||||
|
|
||||||
version="$(curl --silent 'https://api.github.com/repos/zen-browser/desktop/releases/latest' | jq --raw-output '.tag_name')"
|
version="$(curl --silent 'https://api.github.com/repos/zen-browser/desktop/releases/latest' | jq --raw-output '.tag_name')"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue