diff --git a/system/widevine/default.nix b/system/widevine/default.nix index df1aa78..33e32da 100644 --- a/system/widevine/default.nix +++ b/system/widevine/default.nix @@ -7,29 +7,42 @@ }: { 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}" - ''; - }); - }) + ( + final: prev: + let + # Determine the correct directory name based on the system architecture + archDir = + if final.stdenv.hostPlatform.isAarch64 then + "linux_arm64" + else if final.stdenv.hostPlatform.isx86_64 then + "linux_x64" + else + throw "Unsupported architecture for Widevine CDM"; + in + { + 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/${archDir}/libwidevinecdm.so" "${widevineOutDir}/libwidevinecdm.so" + ln -s "${widevineCdmDir}/manifest.json" "${widevineOutDir}/manifest.json" + wrapProgram "$oldExe" --set MOZ_GMP_PATH "${widevineOutDir}" + ''; + }); + } + ) ]; }