¿Cómo usar las políticas de Firefox en NixOs/Cómo agregar archivos de configuración a un paquete Nix?

¿Cómo usar las políticas de Firefox en NixOs/Cómo agregar archivos de configuración a un paquete Nix?

Necesito implementar mi Firefox configurado y con extensiones en NixOS. Quiero hacerlo de forma declarativa (en configuration.nix) y no quiero utilizar el administrador de casa.

Firefox busca la configuración en /nix/store/<hash>-firefox-unwrapped-74.0.1/lib/firefox/distribution/policies.json(verificada con strace).

De ahí la pregunta: ¿Cómo agrego este archivo al paquete nixpkgs de Firefox? (Pregunta adicional: ¿Cómo obtengo un archivo de mi Github Repo allí?)

Soy bastante nuevo en NixOs. Consulté los manuales sobre anulación, superposiciones, envoltura y más, pero no pude lograrlo. Probé con ambos firefoxy firefox-bin.firefox-unwrapped

Respuesta1

Desde NixOS 21.05 (comprometerse) ahora es fácil crear un paquete personalizado de Firefox con algunos valores de política establecidos usando, por ejemplo,

pkgs.wrapFirefox pkgs.firefox-unwrapped {
  extraPolicies = {
    DisableFirefoxStudies = true;
    DisablePocket = true;
  };
}

¿Dónde pkgsestá configurado el paquete Nixpkgs?

Respuesta2

Eché un vistazo a las expresiones de Firefox Nix y no vi una manera de proporcionar un archivo policies.json.

Si modifica el paquete de modo que pueda proporcionar la política como entrada para la derivación, funcionaría, pero los usuarios se verían obligados a compilar Firefox; Porque el archivo sería una entrada de compilación.

Si Firefox proporciona una manera de especificar dónde encontrar el archivo de políticas en tiempo de ejecución, esa podría ser una solución ideal. De lo contrario, puede agregar un parche al paquete de Firefox que modifica el código fuente para buscar el archivo de políticas en, digamos /etc/firefox/policies.json.... Una vez implementado ese cambio, puede usar el environmentmódulo NixOS /etc/nixos/configuration.nixpara crear las políticas. Algo como esto:

environment.etc."firefox/policies".text = "INSERT POLICY HERE";

información relacionada