···459459460460- `firefox-devedition`, `firefox-beta`, `firefox-esr` executable file names for now match their package names, which is consistent with the `firefox-*-bin` packages. The desktop entries are also updated so that you can have multiple editions of firefox in your app launcher.
461461462462+- `chromium` and `ungoogled-chromium` had a long stanging issue regarding Widevine DRM handling in nixpkgs fixed.
463463+ `chromium` now no longer automatically downloads Widevine when encountering DRM protected content.
464464+ To be able to play DRM protected content in `chromium` now, you have to explicitly opt-in as originally intended using `chromium.override { enableWideVine = true; }`.
465465+ This override has been added almost 10 years ago.
466466+462467- switch-to-configuration does not directly call systemd-tmpfiles anymore.
463468 Instead, the new artificial sysinit-reactivation.target is introduced which
464469 allows to restart multiple services that are ordered before sysinit.target
···241241 ./patches/cross-compile.patch
242242 # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed):
243243 ./patches/no-build-timestamps.patch
244244- # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags:
245245- ./patches/widevine-79.patch
244244+ ] ++ lib.optionals (packageName == "chromium") [
245245+ # This patch is limited to chromium and ungoogled-chromium because electron-source sets
246246+ # enable_widevine to false.
247247+ #
248248+ # The patch disables the automatic Widevine download (component) that happens at runtime
249249+ # completely (~/.config/chromium/WidevineCdm/). This would happen if chromium encounters DRM
250250+ # protected content or when manually opening chrome://components.
251251+ #
252252+ # It also prevents previously downloaded Widevine blobs in that location from being loaded and
253253+ # used at all, while still allowing the use of our -wv wrapper. This is because those old
254254+ # versions are out of out our control and may be vulnerable, given we literally disable their
255255+ # auto updater.
256256+ #
257257+ # bundle_widevine_cdm is available as gn flag, but we cannot use it, as it expects a bunch of
258258+ # files Widevine files at configure/compile phase that we don't have. Changing the value of the
259259+ # BUNDLE_WIDEVINE_CDM build flag does work in the way we want though.
260260+ # We also need enable_widevine_cdm_component to be false. Unfortunately it isn't exposed as gn
261261+ # flag (declare_args) so we simply hardcode it to false.
262262+ ./patches/widevine-disable-auto-download-allow-bundle.patch
263263+ ] ++ [
246264 # Required to fix the build with a more recent wayland-protocols version
247265 # (we currently package 1.26 in Nixpkgs while Chromium bundles 1.21):
248266 # Source: https://bugs.chromium.org/p/angleproject/issues/detail?id=7582#c1
···418436 # Feature overrides:
419437 # Native Client support was deprecated in 2020 and support will end in June 2021:
420438 enable_nacl = false;
421421- # Enabling the Widevine component here doesn't affect whether we can
422422- # redistribute the chromium package; the Widevine component is either
423423- # added later in the wrapped -wv build or downloaded from Google:
439439+ } // lib.optionalAttrs (packageName == "chromium") {
440440+ # Enabling the Widevine here doesn't affect whether we can redistribute the chromium package.
441441+ # Widevine in this drv is a bit more complex than just that. See Widevine patch somewhere above.
424442 enable_widevine = true;
443443+ } // {
425444 # Provides the enable-webrtc-pipewire-capturer flag to support Wayland screen capture:
426445 rtc_use_pipewire = true;
427446 # Disable PGO because the profile data requires a newer compiler version (LLVM 14 isn't sufficient):