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.
A través del perfil de usuario:
- Configuración posible mediantearchivos de preferencias
- Cargar extensiones esimposible,El soporte ha finalizado con Firefox 74.
A través del directorio de instalación:
- Configuración + extensiones gestionables víapolíticas.json
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 firefox
y 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 pkgs
está 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 environment
módulo NixOS /etc/nixos/configuration.nix
para crear las políticas. Algo como esto:
environment.etc."firefox/policies".text = "INSERT POLICY HERE";