I did some looking up but didn’t find a clear way to do so. I want DRM enabled by default in all Firefox profiles if possible.
from widevine-cdm: add aarch64 support by RossComputerGuy · Pull Request #343393 · NixOS/nixpkgs · GitHub :
nixpkgs = {
overlays = [
(final: prev: {
firefox = prev.firefox.overrideAttrs (old: {
buildCommand =
old.buildCommand
+ ''
mkdir -p $out/gmp-widevinecdm/system-installed
ln -s "${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_arm64/libwidevinecdm.so" $out/gmp-widevinecdm/system-installed/libwidevinecdm.so
ln -s "${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/manifest.json" $out/gmp-widevinecdm/system-installed/manifest.json
wrapProgram "$oldExe" \
--set MOZ_GMP_PATH "$out/gmp-widevinecdm/system-installed"
'';
});
})
];
};
I have not tried this (on my todo).
I got this flake working.
Example from the documentation:
{
description = "My system flake";
inputs = {
nixos-aarch64-widevine.url = "github:epetousis/nixos-aarch64-widevine";
};
outputs = {
self,
[...],
nixos-aarch64-widevine
}:
{
nixosConfigurations."my-aarch64-device" = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
[...],
{
nixpkgs.overlays = [ nixos-aarch64-widevine.overlays.default ];
}
];
};
};
In configuration.nix:
environment.variables.MOZ_GMP_PATH = [
"${pkgs.widevine-cdm-lacros}/gmp-widevinecdm/system-installed"
];
another overlay-based solution to make any linux aarch64 firefox widevine-ified, without being reliant on home-manager:
final: prev:
let
inherit (prev) lib stdenv;
in
{
# other overrides...
}
// lib.optionalAttrs (stdenv.isLinux && stdenv.isAarch64) {
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}"
'';
});
}