Wie verwende ich Firefox-Richtlinien in NixOs / Wie füge ich Konfigurationsdateien zu einem Nix-Paket hinzu?

Wie verwende ich Firefox-Richtlinien in NixOs / Wie füge ich Konfigurationsdateien zu einem Nix-Paket hinzu?

Ich muss meinen Firefox konfiguriert und mit Erweiterungen in NixOS bereitstellen. Ich möchte das deklarativ (in ) tun configuration.nixund keinen Home-Manager verwenden.

Firefox sucht nach der Konfiguration in /nix/store/<hash>-firefox-unwrapped-74.0.1/lib/firefox/distribution/policies.json(überprüft mit strace).

Daher die Frage: Wie füge ich diese Datei zum Firefox-Paket nixpkgs hinzu? (Bonusfrage: Wie bekomme ich eine Datei aus meinem Github-Repo dorthin?)

Ich bin ziemlich neu bei NixOs. Ich habe die Handbücher zu Overriding, Overlays, Wrapping und mehr durchgesehen, aber es hat nicht geklappt. Ich habe es sowohl mit firefoxals firefox-binauch versucht firefox-unwrapped.

Antwort1

Seit NixOS 21.05 (begehen) ist es jetzt einfach, ein benutzerdefiniertes Firefox-Paket mit einigen festgelegten Richtlinienwerten zu erstellen, beispielsweise mit

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

wo pkgsist der Nixpkgs-Paketsatz?

Antwort2

Ich habe einen Blick auf die Nix-Ausdrücke von Firefox geworfen und konnte keine Möglichkeit finden, ein bereitzustellen policies.json.

Wenn Sie das Paket so ändern, dass Sie die Richtlinie als Eingabe für die Ableitung bereitstellen können, würde es funktionieren, aber dann müssten die Benutzer Firefox kompilieren, weil die Datei eine Build-Eingabe wäre.

Wenn Firefox eine Möglichkeit bietet, zur Laufzeit anzugeben, wo die Richtliniendatei zu finden ist, könnte das eine ideale Lösung sein. Andernfalls können Sie dem Firefox-Paket einen Patch hinzufügen, der den Quellcode so ändert, dass die Richtliniendatei beispielsweise an folgender Stelle gesucht wird: ... /etc/firefox/policies.jsonMit dieser Änderung können Sie das environmentNixOS-Modul verwenden /etc/nixos/configuration.nix, um die Richtlinien zu erstellen. Etwa so:

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

verwandte Informationen