From 498ffad0c420dd1f9ef9fb8313b06c6e0aa73faa Mon Sep 17 00:00:00 2001 From: Sean Kovacs Date: Sun, 14 Dec 2025 15:23:45 -0500 Subject: [PATCH] fix firefox widevine --- flake.nix | 1 + home/browsers/firefox/default.nix | 4 --- packages/overlay.nix | 2 -- packages/widevine-firefox/package.nix | 21 ---------------- system/widevine/default.nix | 35 +++++++++++++++++++++++++++ 5 files changed, 36 insertions(+), 27 deletions(-) delete mode 100644 packages/widevine-firefox/package.nix create mode 100644 system/widevine/default.nix diff --git a/flake.nix b/flake.nix index e8e314f..4b8c044 100644 --- a/flake.nix +++ b/flake.nix @@ -87,6 +87,7 @@ ]; } ./system/all.nix + ./system/widevine/default.nix ./system/shell/fish.nix ./system/tailscale/default.nix ./system/hosts/${hostname}/default.nix diff --git a/home/browsers/firefox/default.nix b/home/browsers/firefox/default.nix index 99a5455..759d13f 100644 --- a/home/browsers/firefox/default.nix +++ b/home/browsers/firefox/default.nix @@ -8,10 +8,6 @@ }: { - home.sessionVariables = lib.mkIf pkgs.stdenv.hostPlatform.isAarch64 { - MOZ_GMP_PATH = "${pkgs.widevine-firefox}/gmp-widevinecdm/system-installed"; - }; - home.file.".mozilla/firefox/default/chrome" = { source = ./chrome; force = true; diff --git a/packages/overlay.nix b/packages/overlay.nix index 71bf926..7377b92 100644 --- a/packages/overlay.nix +++ b/packages/overlay.nix @@ -25,6 +25,4 @@ final: prev: { }; spotifyd = prev.callPackage (builtins.path { path = ./spotifyd/package.nix; }) { }; - - widevine-firefox = prev.callPackage (builtins.path { path = ./widevine-firefox/package.nix; }) { }; } diff --git a/packages/widevine-firefox/package.nix b/packages/widevine-firefox/package.nix deleted file mode 100644 index 9fc0d22..0000000 --- a/packages/widevine-firefox/package.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - stdenv, - widevine-cdm, -}: - -stdenv.mkDerivation { - name = "widevine-firefox"; - version = widevine-cdm.version; - - buildCommand = '' - mkdir -p $out/gmp-widevinecdm/system-installed - ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json" $out/gmp-widevinecdm/system-installed/manifest.json - ln -s "${widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" $out/gmp-widevinecdm/system-installed/libwidevinecdm.so - ''; - - meta = widevine-cdm.meta // { - platforms = [ - "aarch64-linux" - ]; - }; -} diff --git a/system/widevine/default.nix b/system/widevine/default.nix new file mode 100644 index 0000000..0d7aec6 --- /dev/null +++ b/system/widevine/default.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + nixpkgs.overlays = lib.mkIf (config.nixpkgs.hostPlatform.isLinux) [ + (final: prev: { + wrapFirefox = + browser: opts: + let + extraPrefs = (opts.extraPrefs or "") + '' + lockPref("media.gmp-widevinecdm.version", "system-installed"); + lockPref("media.gmp-widevinecdm.visible", true); + lockPref("media.gmp-widevinecdm.enabled", true); + lockPref("media.gmp-widevinecdm.autoupdate", false); + lockPref("media.eme.enabled", true); + lockPref("media.eme.encrypted-media-encryption-scheme.enabled", true); + ''; + widevineCdmDir = "${final.widevine-cdm}/share/google/chrome/WidevineCdm"; + widevineOutDir = "$out/gmp-widevinecdm/system-installed"; + in + (prev.wrapFirefox browser (opts // { inherit extraPrefs; })).overrideAttrs (previousAttrs: { + buildCommand = previousAttrs.buildCommand + '' + mkdir -p "${widevineOutDir}" + ln -s "${widevineCdmDir}/_platform_specific/linux_arm64/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" + wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" + ''; + }); + }) + ]; +}