summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Weiss <dev.primeos@gmail.com>2020-12-17 19:02:21 +0100
committerGitHub <noreply@github.com>2020-12-17 19:02:21 +0100
commitf5944b74e670cac2746edaee609c9f31d816bcbd (patch)
tree4d3f5a592544c9124f947f6258ed97ce1dadc31d
parent230e0a31a08bc7b4537ebce925a1a2ad70eeadeb (diff)
parent240a8f746e0e3e698fc87cb9934ffaef7e09e5bf (diff)
Merge pull request #106475 from primeos/ungoogled-chromium-merge
Merge ungoogled-chromium back into the chromium expressions
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix17
-rw-r--r--pkgs/applications/networking/browsers/chromium/common.nix27
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix14
-rw-r--r--pkgs/applications/networking/browsers/chromium/ungoogled.nix (renamed from pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix)1
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.py3
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json16
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix86
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/common.nix345
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/default.nix214
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/patches/no-build-timestamps.patch17
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/patches/widevine-79.patch13
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/plugins.nix92
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled-src.nix6
-rwxr-xr-xpkgs/applications/networking/browsers/ungoogled-chromium/update.py121
-rw-r--r--pkgs/applications/networking/browsers/ungoogled-chromium/upstream-info.json46
-rw-r--r--pkgs/top-level/all-packages.nix5
16 files changed, 73 insertions, 950 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index d3953da71d28..b9a42e825f31 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -1,4 +1,4 @@
-{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
+{ stdenv, mkChromiumDerivation, channel, enableWideVine, ungoogled }:
with stdenv.lib;
@@ -69,18 +69,25 @@ mkChromiumDerivation (base: rec {
requiredSystemFeatures = [ "big-parallel" ];
meta = {
- description = "An open source web browser from Google";
+ description = "An open source web browser from Google"
+ + optionalString ungoogled ", with dependencies on Google web services removed";
longDescription = ''
Chromium is an open source web browser from Google that aims to build a
safer, faster, and more stable way for all Internet users to experience
the web. It has a minimalist user interface and provides the vast majority
of source code for Google Chrome (which has some additional features).
'';
- homepage = "https://www.chromium.org/";
- maintainers = with maintainers; [ primeos thefloweringash bendlas ]; # See README.md
+ homepage = if ungoogled
+ then "https://github.com/Eloston/ungoogled-chromium"
+ else "https://www.chromium.org/";
+ maintainers = with maintainers; if ungoogled
+ then [ squalus primeos ]
+ else [ primeos thefloweringash bendlas ];
license = if enableWideVine then licenses.unfree else licenses.bsd3;
platforms = platforms.linux;
- hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
+ hydraPlatforms = if (channel == "stable" || channel == "ungoogled-chromium")
+ then ["aarch64-linux" "x86_64-linux"]
+ else [];
timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
};
})
diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix
index 0c16d0c9ec60..d754c2769c90 100644
--- a/pkgs/applications/networking/browsers/chromium/common.nix
+++ b/pkgs/applications/networking/browsers/chromium/common.nix
@@ -31,6 +31,7 @@
, proprietaryCodecs ? true
, cupsSupport ? true
, pulseSupport ? false, libpulseaudio ? null
+, ungoogled ? false, ungoogled-chromium
, channel
, upstream-info
@@ -109,6 +110,10 @@ let
result
else result;
+ ungoogler = ungoogled-chromium {
+ inherit (upstream-info.deps.ungoogled-patches) rev sha256;
+ };
+
base = rec {
name = "${packageName}-unwrapped-${version}";
inherit (upstream-info) version;
@@ -208,6 +213,10 @@ let
'' + optionalString stdenv.isAarch64 ''
substituteInPlace build/toolchain/linux/BUILD.gn \
--replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
+ '' + optionalString ungoogled ''
+ ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
+ ${ungoogler}/utils/patches.py . ${ungoogler}/patches
+ ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz .
'';
gnFlags = mkGnFlags ({
@@ -260,6 +269,24 @@ let
use_system_minigbm = true;
use_system_libdrm = true;
system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
+ } // optionalAttrs ungoogled {
+ chrome_pgo_phase = 0;
+ enable_hangout_services_extension = false;
+ enable_js_type_check = false;
+ enable_mdns = false;
+ enable_nacl_nonsfi = false;
+ enable_one_click_signin = false;
+ enable_reading_list = false;
+ enable_remoting = false;
+ enable_reporting = false;
+ enable_service_discovery = false;
+ exclude_unwind_tables = true;
+ google_api_key = "";
+ google_default_client_id = "";
+ google_default_client_secret = "";
+ safe_browsing_mode = 0;
+ use_official_google_api_keys = false;
+ use_unofficial_version_number = false;
} // (extraAttrs.gnFlags or {}));
configurePhase = ''
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index e35e4d945dde..0cbfbc332706 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -15,6 +15,7 @@
, enablePepperFlash ? false
, enableWideVine ? false
, enableVaapi ? false # Disabled by default due to unofficial support
+, ungoogled ? false # Whether to build chromium or ungoogled-chromium
, cupsSupport ? true
, pulseSupport ? config.pulseaudio or stdenv.isLinux
, commandLineArgs ? ""
@@ -33,7 +34,7 @@ let
mkChromiumDerivation = callPackage ./common.nix ({
inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
- cupsSupport pulseSupport;
+ cupsSupport pulseSupport ungoogled;
gnChromium = gn.overrideAttrs (oldAttrs: {
inherit (upstream-info.deps.gn) version;
src = fetchgit {
@@ -42,11 +43,13 @@ let
});
});
- browser = callPackage ./browser.nix { inherit channel enableWideVine; };
+ browser = callPackage ./browser.nix { inherit channel enableWideVine ungoogled; };
plugins = callPackage ./plugins.nix {
inherit enablePepperFlash;
};
+
+ ungoogled-chromium = callPackage ./ungoogled.nix {};
};
pkgSuffix = if channel == "dev" then "unstable" else channel;
@@ -113,7 +116,9 @@ let
};
};
- suffix = if channel != "stable" then "-" + channel else "";
+ suffix = if (channel == "stable" || channel == "ungoogled-chromium")
+ then ""
+ else "-" + channel;
sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
@@ -133,7 +138,8 @@ let
else browser;
in stdenv.mkDerivation {
- name = "chromium${suffix}-${version}";
+ name = lib.optionalString ungoogled "ungoogled-"
+ + "chromium${suffix}-${version}";
inherit version;
buildInputs = [
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix b/pkgs/applications/networking/browsers/chromium/ungoogled.nix
index 17418c90af49..299b19f2f4f6 100644
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/ungoogled.nix
+++ b/pkgs/applications/networking/browsers/chromium/ungoogled.nix
@@ -4,6 +4,7 @@
, makeWrapper
, patch
}:
+
{ rev
, sha256
}:
diff --git a/pkgs/applications/networking/browsers/chromium/update.py b/pkgs/applications/networking/browsers/chromium/update.py
index 9e1f0aec598d..57fe268e72fe 100755
--- a/pkgs/applications/networking/browsers/chromium/update.py
+++ b/pkgs/applications/networking/browsers/chromium/update.py
@@ -113,9 +113,12 @@ with open(JSON_PATH, 'w') as out:
return 1
elif channel_name == 'dev':
return 2
+ elif channel_name == 'ungoogled-chromium':
+ return 3
else:
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
sys.exit(1)
+ channels['ungoogled-chromium'] = last_channels['ungoogled-chromium'] # Keep ungoogled-chromium unchanged
sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
json.dump(sorted_channels, out, indent=2)
out.write('\n')
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index 3b64e601eba6..1fd36cb15f30 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -42,5 +42,21 @@
"sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9"
}
}
+ },
+ "ungoogled-chromium": {
+ "version": "87.0.4280.88",
+ "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy",
+ "deps": {
+ "ungoogled-patches": {
+ "rev": "87.0.4280.88-1",
+ "sha256": "0w2137w8hfcgl6f938hqnb4ffp33v5r8vdzxrvs814w7dszkiqgg"
+ },
+ "gn": {
+ "version": "2020-09-09",
+ "url": "https://gn.googlesource.com/gn",
+ "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2",
+ "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk"
+ }
+ }
}
}
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
deleted file mode 100644
index c23a8cead3a7..000000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/browser.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ stdenv, mkChromiumDerivation, channel, enableWideVine }:
-
-with stdenv.lib;
-
-mkChromiumDerivation (base: rec {
- name = "chromium-browser";
- packageName = "chromium";
- buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
-
- outputs = ["out" "sandbox"];
-
- sandboxExecutableName = "__chromium-suid-sandbox";
-
- installPhase = ''
- mkdir -p "$libExecPath"
- cp -v "$buildPath/"*.so "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
- cp -v "$buildPath/icudtl.dat" "$libExecPath/"
- cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
- cp -v "$buildPath/chrome" "$libExecPath/$packageName"
-
- # Swiftshader
- # See https://stackoverflow.com/a/4264351/263061 for the find invocation.
- if [ -n "$(find "$buildPath/swiftshader/" -maxdepth 1 -name '*.so' -print -quit)" ]; then
- echo "Swiftshader files found; installing"
- mkdir -p "$libExecPath/swiftshader"
- cp -v "$buildPath/swiftshader/"*.so "$libExecPath/swiftshader/"
- else
- echo "Swiftshader files not found"
- fi
-
- mkdir -p "$sandbox/bin"
- cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
-
- mkdir -vp "$out/share/man/man1"
- cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
-
- for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
- num_and_suffix="''${icon_file##*logo_}"
- icon_size="''${num_and_suffix%.*}"
- expr "$icon_size" : "^[0-9][0-9]*$" || continue
- logo_output_prefix="$out/share/icons/hicolor"
- logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
- mkdir -vp "$logo_output_path"
- cp -v "$icon_file" "$logo_output_path/$packageName.png"
- done
-
- # Install Desktop Entry
- install -D chrome/installer/linux/common/desktop.template \
- $out/share/applications/chromium-browser.desktop
-
- substituteInPlace $out/share/applications/chromium-browser.desktop \
- --replace "@@MENUNAME@@" "Chromium" \
- --replace "@@PACKAGE@@" "chromium" \
- --replace "Exec=/usr/bin/@@USR_BIN_SYMLINK_NAME@@" "Exec=chromium"
-
- # Append more mime types to the end
- sed -i '/^MimeType=/ s,$,x-scheme-handler/webcal;x-scheme-handler/mailto;x-scheme-handler/about;x-scheme-handler/unknown,' \
- $out/share/applications/chromium-browser.desktop
-
- # See https://github.com/NixOS/nixpkgs/issues/12433
- sed -i \
- -e '/\[Desktop Entry\]/a\' \
- -e 'StartupWMClass=chromium-browser' \
- $out/share/applications/chromium-browser.desktop
- '';
-
- passthru = { inherit sandboxExecutableName; };
-
- requiredSystemFeatures = [ "big-parallel" ];
-
- meta = {
- description = "An open source web browser from Google, with dependencies on Google web services removed";
- longDescription = ''
- Chromium is an open source web browser from Google that aims to build a
- safer, faster, and more stable way for all Internet users to experience
- the web. It has a minimalist user interface and provides the vast majority
- of source code for Google Chrome (which has some additional features).
- '';
- homepage = "https://github.com/Eloston/ungoogled-chromium";
- maintainers = with maintainers; [ squalus ];
- license = if enableWideVine then licenses.unfree else licenses.bsd3;
- platforms = platforms.linux;
- hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
- timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
- };
-})
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
deleted file mode 100644
index 17814c26caa4..000000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/common.nix
+++ /dev/null
@@ -1,345 +0,0 @@
-{ stdenv, lib, llvmPackages, gnChromium, ninja, which, nodejs, fetchpatch, fetchurl
-
-# default dependencies
-, gnutar, bzip2, flac, speex, libopus
-, libevent, expat, libjpeg, snappy
-, libpng, libcap
-, xdg_utils, yasm, nasm, minizip, libwebp
-, libusb1, pciutils, nss, re2
-
-, python2Packages, perl, pkgconfig
-, nspr, systemd, kerberos
-, util-linux, alsaLib
-, bison, gperf
-, glib, gtk3, dbus-glib
-, glibc
-, libXScrnSaver, libXcursor, libXtst, libGLU, libGL
-, protobuf, speechd, libXdamage, cups
-, ffmpeg, libxslt, libxml2, at-spi2-core
-, jre8
-, pipewire_0_2
-, libva
-
-# optional dependencies
-, libgcrypt ? null # gnomeSupport || cupsSupport
-, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone
-
-# package customization
-, useOzone ? true
-, gnomeSupport ? false, gnome ? null
-, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
-, proprietaryCodecs ? true
-, cupsSupport ? true
-, pulseSupport ? false, libpulseaudio ? null
-, ungoogled-chromium
-, ungoogled ? false
-
-, channel
-, upstream-info
-}:
-
-buildFun:
-
-with stdenv.lib;
-
-let
- jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731
-
- # The additional attributes for creating derivations based on the chromium
- # source tree.
- extraAttrs = buildFun base;
-
- githubPatch = commit: sha256: fetchpatch {
- url = "https://github.com/chromium/chromium/commit/${commit}.patch";
- inherit sha256;
- };
-
- mkGnFlags =
- let
- # Serialize Nix types into GN types according to this document:
- # https://source.chromium.org/gn/gn/+/master:docs/language.md
- mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
- sanitize = value:
- if value == true then "true"
- else if value == false then "false"
- else if isList value then "[${concatMapStringsSep ", " sanitize value}]"
- else if isInt value then toString value
- else if isString value then mkGnString value
- else throw "Unsupported type for GN value `${value}'.";
- toFlag = key: value: "${key}=${sanitize value}";
- in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
-
- # https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py
- gnSystemLibraries = [
- "ffmpeg"
- "flac"
- "libjpeg"
- "libpng"
- "libwebp"
- "libxslt"
- "opus"
- "snappy"
- "zlib"
- ];
-
- opusWithCustomModes = libopus.override {
- withCustomModes = true;
- };
-
- defaultDependencies = [
- bzip2 flac speex opusWithCustomModes
- libevent expat libjpeg snappy
- libpng libcap
- xdg_utils minizip libwebp
- libusb1 re2
- ffmpeg libxslt libxml2
- nasm
- ];
-
- # build paths and release info
- packageName = extraAttrs.packageName or extraAttrs.name;
- buildType = "Release";
- buildPath = "out/${buildType}";
- libExecPath = "$out/libexec/${packageName}";
-
- versionRange = min-version: upto-version:
- let inherit (upstream-info) version;
- result = versionAtLeast version min-version && versionOlder version upto-version;
- stable-version = (importJSON ./upstream-info.json).stable.version;
- in if versionAtLeast stable-version upto-version
- then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
- result
- else result;
-
- ungoogler =
- let versionEntry = (import ./ungoogled-src.nix)."${upstream-info.version}";
- in ungoogled-chromium {
- inherit (versionEntry) rev sha256;
- };
- base = rec {
- name = "${packageName}-unwrapped-${version}";
- inherit (upstream-info) version;
- inherit channel packageName buildType buildPath;
-
- src = fetchurl {
- url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
- inherit (upstream-info) sha256;
- };
-
- nativeBuildInputs = [
- llvmPackages.lldClang.bintools
- ninja which python2Packages.python perl pkgconfig
- python2Packages.ply python2Packages.jinja2 nodejs
- gnutar python2Packages.setuptools
- ];
-
- buildInputs = defaultDependencies ++ [
- nspr nss systemd
- util-linux alsaLib
- bison gperf kerberos
- glib gtk3 dbus-glib
- libXScrnSaver libXcursor libXtst libGLU libGL
- pciutils protobuf speechd libXdamage at-spi2-core
- jre
- pipewire_0_2
- libva
- ] ++ optional gnomeKeyringSupport libgnome-keyring3
- ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
- ++ optionals cupsSupport [ libgcrypt cups ]
- ++ optional pulseSupport libpulseaudio
- ++ optionals useOzone [ libdrm wayland mesa.drivers libxkbcommon ];
-
- patches = [
- ./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed)
- ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags
- # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
- ];
-
- postPatch = ''
- # remove unused third-party
- for lib in ${toString gnSystemLibraries}; do
- if [ -d "third_party/$lib" ]; then
- find "third_party/$lib" -type f \
- \! -path "third_party/$lib/chromium/*" \
- \! -path "third_party/$lib/google/*" \
- \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \
- \! -regex '.*\.\(gn\|gni\|isolate\)' \
- -delete
- fi
- done
-
- # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.):
- substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" ""
- if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then
- substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \
- --replace "/usr/bin/env -S make -f" "/usr/bin/make -f"
- fi
-
- # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
- substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
- --replace \
- 'return sandbox_binary;' \
- 'return base::FilePath(GetDevelSandboxPath());'
-
- substituteInPlace services/audio/audio_sandbox_hook_linux.cc \
- --replace \
- '/usr/share/alsa/' \
- '${alsaLib}/share/alsa/' \
- --replace \
- '/usr/lib/x86_64-linux-gnu/gconv/' \
- '${glibc}/lib/gconv/' \
- --replace \
- '/usr/share/locale/' \
- '${glibc}/share/locale/'
-
- sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
- chrome/browser/shell_integration_linux.cc
-
- sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${lib.getLib systemd}/lib/\1!' \
- device/udev_linux/udev?_loader.cc
-
- sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
- gpu/config/gpu_info_collector_linux.cc
-
- # Allow to put extensions into the system-path.
- sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
-
- patchShebangs .
- # use our own nodejs
- mkdir -p third_party/node/linux/node-linux-x64/bin
- ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node
-
- # Allow building against system libraries in official builds
- sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py
-
- '' + optionalString stdenv.isAarch64 ''
- substituteInPlace build/toolchain/linux/BUILD.gn \
- --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
- '' + optionalString ungoogled ''
- ${ungoogler}/utils/prune_binaries.py . ${ungoogler}/pruning.list || echo "some errors"
- ${ungoogler}/utils/patches.py . ${ungoogler}/patches
- ${ungoogler}/utils/domain_substitution.py apply -r ${ungoogler}/domain_regex.list -f ${ungoogler}/domain_substitution.list -c ./ungoogled-domsubcache.tar.gz .
- '';
-
- gnFlags = mkGnFlags ({
- custom_toolchain = "//build/toolchain/linux/unbundle:default";
- host_toolchain = "//build/toolchain/linux/unbundle:default";
- is_official_build = true;
-
- use_vaapi = !stdenv.isAarch64; # TODO: Remove once M88 is released
- use_sysroot = false;
- use_gnome_keyring = gnomeKeyringSupport;
- use_gio = gnomeSupport;
- # ninja: error: '../../native_client/toolchain/linux_x86/pnacl_newlib/bin/x86_64-nacl-objcopy',
- # needed by 'nacl_irt_x86_64.nexe', missing and no known rule to make it
- enable_nacl = false;
- # Enabling the Widevine component here doesn't affect whether we can
- # redistribute the chromium package; the Widevine component is either
- # added later in the wrapped -wv build or downloaded from Google.
- enable_widevine = true;
- use_cups = cupsSupport;
- # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture.
- rtc_use_pipewire = true;
-
- treat_warnings_as_errors = false;
- clang_use_chrome_plugins = false;
- blink_symbol_level = 0;
- symbol_level = 0;
- fieldtrial_testing_like_official_build = true;
-
- # Google API keys, see:
- # http://www.chromium.org/developers/how-tos/api-keys
- # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
- # please get your own set of keys.
- google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
- google_default_client_id = "404761575300.apps.googleusercontent.com";
- google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
- } // optionalAttrs proprietaryCodecs {
- # enable support for the H.264 codec
- proprietary_codecs = true;
- enable_hangout_services_extension = true;
- ffmpeg_branding = "Chrome";
- } // optionalAttrs pulseSupport {
- use_pulseaudio = true;
- link_pulseaudio = true;
- } // optionalAttrs useOzone {
- use_ozone = true;
- use_xkbcommon = true;
- use_glib = true;
- use_gtk = true;
- use_system_libwayland = true;
- use_system_minigbm = true;
- use_system_libdrm = true;
- system_wayland_scanner_path = "${wayland}/bin/wayland-scanner";
- } // optionalAttrs ungoogled {
- chrome_pgo_phase = 0;
- enable_hangout_services_extension = false;
- enable_js_type_check = false;
- enable_mdns = false;
- enable_nacl_nonsfi = false;
- enable_one_click_signin = false;
- enable_reading_list = false;
- enable_remoting = false;
- enable_reporting = false;
- enable_service_discovery = false;
- exclude_unwind_tables = true;
- google_api_key = "";
- google_default_client_id = "";
- google_default_client_secret = "";
- safe_browsing_mode = 0;
- use_official_google_api_keys = false;
- use_unofficial_version_number = false;
- } // (extraAttrs.gnFlags or {}));
-
- configurePhase = ''
- runHook preConfigure
-
- # This is to ensure expansion of $out.
- libExecPath="${libExecPath}"
- python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries}
- ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
-
- # Fail if `gn gen` contains a WARNING.
- grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1
-
- runHook postConfigure
- '';
-
- # Don't spam warnings about unknown warning options. This is useful because
- # our Clang is always older than Chromium's and the build logs have a size
- # of approx. 25 MB without this option (and this saves e.g. 66 %).
- NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option";
-
- buildPhase = let
- buildCommand = target: ''
- ninja -C "${buildPath}" -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES "${target}"
- (
- source chrome/installer/linux/common/installer.include
- PACKAGE=$packageName
- MENUNAME="Chromium"
- process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
- )
- '';
- targets = extraAttrs.buildTargets or [];
- commands = map buildCommand targets;
- in concatStringsSep "\n" commands;
-
- postFixup = ''
- # Make sure that libGLESv2 is found by dlopen (if using EGL).
- chromiumBinary="$libExecPath/$packageName"
- origRpath="$(patchelf --print-rpath "$chromiumBinary")"
- patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary"
- '';
-
- passthru = {
- updateScript = ./update.py;
- chromiumDeps = {
- gn = gnChromium;
- };
- };
- };
-
-# Remove some extraAttrs we supplied to the base attributes already.
-in stdenv.mkDerivation (base // removeAttrs extraAttrs [
- "name" "gnFlags" "buildTargets"
-] // { passthru = base.passthru // (extraAttrs.passthru or {}); })
diff --git a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix b/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
deleted file mode 100644
index b75d271ace55..000000000000
--- a/pkgs/applications/networking/browsers/ungoogled-chromium/default.nix
+++ /dev/null
@@ -1,214 +0,0 @@
-{ newScope, config, stdenv, fetchurl, makeWrapper
-, llvmPackages_11, ed, gnugrep, coreutils, xdg_utils
-, glib, gtk3, gnome3, gsettings-desktop-schemas, gn, fetchgit
-, libva ? null
-, pipewire_0_2
-, gcc, nspr, nss, runCommand
-, lib
-
-# package customization
-# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
-, channel ? "stable"
-, gnomeSupport ? false, gnome ? null
-, gnomeKeyringSupport ? false
-, proprietaryCodecs ? true
-, enablePepperFlash ? false
-, enableWideVine ? false
-, enableVaapi ? false # Disabled by default due to unofficial support
-, ungoogled ? true
-, cupsSupport ? true
-, pulseSupport ? config.pulseaudio or stdenv.isLinux
-, commandLineArgs ? ""
-}:
-
-let
- llvmPackages = llvmPackages_11;
- stdenv = llvmPackages.stdenv;
-
- callPackage = newScope chromium;
-
- chromium = rec {
- inherit stdenv llvmPackages;
-
- upstream-info = (lib.importJSON ./upstream-info.json).${channel};
-
- mkChromiumDerivation = callPackage ./common.nix ({
- inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs
- cupsSupport pulseSupport;
- inherit ungoogled;
- gnChromium = gn.overrideAttrs (oldAttrs: {
- inherit (upstream-info.deps.gn) version;
- src = fetchgit {
- inherit (upstream-info.deps.gn) url rev sha256;
- };
- });
- });
-
- browser = callPackage ./browser.nix { inherit channel enableWideVine; };
-
- plugins = callPackage ./plugins.nix {
- inherit enablePepperFlash;
- };
-
- ungoogled-chromium = callPackage ./ungoogled.nix {};
- };
-
- pkgSuffix = if channel == "dev" then "unstable" else channel;
- pkgName = "google-chrome-${pkgSuffix}";
- chromeSrc = fetchurl {
- urls = map (repo: "${repo}/${pkgName}/${pkgName}_${version}-1_amd64.deb") [
- "https://dl.google.com/linux/chrome/deb/pool/main/g"
- "http://95.31.35.30/chrome/pool/main/g"
- "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
- "http://repo.fdzh.org/chrome/deb/pool/main/g"
- ];
- sha256 = chromium.upstream-info.sha256bin64;
- };
-
- mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}";
- widevineCdm = stdenv.mkDerivation {
- name = "chrome-widevine-cdm";
-
- src = chromeSrc;
-
- phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
-
- unpackCmd = let
- widevineCdmPath =
- if channel == "stable" then
- "./opt/google/chrome/WidevineCdm"
- else if channel == "beta" then
- "./opt/google/chrome-beta/WidevineCdm"
- else if channel == "dev" then
- "./opt/google/chrome-unstable/WidevineCdm"
- else
- throw "Unknown chromium channel.";
- in ''
- # Extract just WidevineCdm from upstream's .deb file
- ar p "$src" data.tar.xz | tar xJ "${widevineCdmPath}"
-
- # Move things around so that we don't have to reference a particular
- # chrome-* directory later.
- mv "${widevineCdmPath}" ./
-
- # unpackCmd wants a single output directory; let it take WidevineCdm/
- rm -rf opt
- '';
-
- doCheck = true;
- checkPhase = ''
- ! find -iname '*.so' -exec ldd {} + | grep 'not found'
- '';
-
- PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ];
-
- patchPhase = ''
- patchelf --set-rpath "$PATCH_RPATH" _platform_specific/linux_x64/libwidevinecdm.so
- '';
-
- installPhase = ''
- mkdir -p $out/WidevineCdm
- cp -a * $out/WidevineCdm/
- '';
-
- meta = {
- platforms = [ "x86_64-linux" ];
- license = lib.licenses.unfree;
- };