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.
Através do perfil do usuário:
- Configuração possível viaarquivos de preferência
- Carregar extensões énão é possivel,o suporte terminou com o Firefox 74
Através do diretório de instalação:
- Configuração + extensões gerenciáveis viapolíticas.json
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 firefox
e 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 pkgs
está 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 environment
módulo NixOS /etc/nixos/configuration.nix
para criar as políticas. Algo assim:
environment.etc."firefox/policies".text = "INSERT POLICY HERE";