diff options
author | Michael Weiss <dev.primeos@gmail.com> | 2020-12-17 19:02:21 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-17 19:02:21 +0100 |
commit | f5944b74e670cac2746edaee609c9f31d816bcbd (patch) | |
tree | 4d3f5a592544c9124f947f6258ed97ce1dadc31d | |
parent | 230e0a31a08bc7b4537ebce925a1a2ad70eeadeb (diff) | |
parent | 240a8f746e0e3e698fc87cb9934ffaef7e09e5bf (diff) |
Merge pull request #106475 from primeos/ungoogled-chromium-merge
Merge ungoogled-chromium back into the chromium expressions
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; - }; |