Como usar as políticas do Firefox em NixOs / Como adicionar arquivos de configuração a um pacote Nix?

Como usar as políticas do Firefox em NixOs / Como adicionar arquivos de configuração a um pacote Nix?

Preciso implantar meu Firefox configurado e com extensões no NixOS. Quero fazer isso de forma declarativa (em configuration.nix) e não quero usar o home-manager.

O Firefox procura a configuração em /nix/store/<hash>-firefox-unwrapped-74.0.1/lib/firefox/distribution/policies.json(verificado com strace).

Daí a pergunta: Como adiciono este arquivo ao pacote nixpkgs do Firefox? (Pergunta bônus: como faço para obter um arquivo do meu repositório Github lá?)

Sou bastante novo no NixOs. Consultei os manuais sobre substituição, sobreposições, empacotamento e muito mais, mas não consegui fazer isso. Eu tentei com ambos firefoxe firefox-bin.firefox-unwrapped

Responder1

Desde NixOS 21.05 (comprometer-se) agora é fácil criar um pacote personalizado do Firefox com alguns valores de política definidos usando, por exemplo,

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

onde pkgsestá o conjunto de pacotes Nixpkgs.

Responder2

Dei uma olhada nas expressões do Firefox Nix e não vi uma maneira de fornecer um arquivo policies.json.

Se você modificar o pacote de forma que possa fornecer a política como uma entrada para a derivação, isso funcionaria, mas os usuários seriam forçados a compilar o Firefox; Porque o arquivo seria uma entrada de construção.

Se o Firefox fornecer uma maneira de especificar onde encontrar o arquivo de políticas em tempo de execução, essa poderá ser uma solução ideal. Caso contrário, você pode adicionar um patch ao pacote do Firefox que modifica o código-fonte para procurar o arquivo de políticas em say... /etc/firefox/policies.json. Com essa mudança em vigor, você pode usar o environmentmódulo NixOS /etc/nixos/configuration.nixpara criar as políticas. Algo assim:

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

informação relacionada