Este repositório contém os scripts e o aplicativo da web para search.nixos.org
.
A ideia inicial era substituir a pesquisa de pacotes e opções do NixOS que buscava um arquivo JSON que continha todos os pacotes (ou opções). Essa abordagem é boa por sua configuração simples, mas começou a mostrar seus problemas quando o número de pacotes foi ficando cada vez maior. Tenho certeza de que poderíamos otimizá-lo ainda mais, mas ideias sobre o que poderíamos fazer se houvesse algum banco de dados nos fundos eram tentadoras para não tentar.
Para back-end, estamos usando a instância Elasticsearch, que é gentilmente patrocinada por bonsai.io. No frontend estamos usando Elm.
O caso de uso que queremos resolver é que um visitante deseja ver se existe um pacote ou consultar os detalhes de determinado pacote.
Um usuário deseja convergir para um único resultado, se possível. Quanto mais caracteres são adicionados a uma consulta de pesquisa, mais restrita é a pesquisa e devemos mostrar menos resultados.
Muito importante também é a classificação dos resultados da pesquisa. Isso trará resultados de pesquisa mais relevantes para o topo, já que muitas vezes é difícil produzir uma consulta de pesquisa que produza apenas um item de resultado.
Menos importante, mas proporcionando melhor experiência ao usuário. são sugestões para escrever melhores consultas de pesquisa. O recurso de sugestão deve orientar o usuário a escrever consultas melhores que, por sua vez, produzirão melhores resultados.
Para começar a desenvolver abra um terminal e execute:
env --chdir=frontend nix develop -c yarn dev
Você pode apontar seu navegador para http://localhost:3000
e começar a desenvolver. Quaisquer alterações nos arquivos de origem ( ./frontend/src
) acionarão uma recarga a quente de um aplicativo.
main
, uma ação GitHub é acionada.yarn prod
../dist
) é então implantado no Netlify.Para adicionar seus próprios flocos ao índice de pesquisa, edite ./flakes/manual.toml.
Os tipos possíveis são github
, gitlab
, sourcehut
e git
(que é o substituto para qualquer tipo de repositório git, mas requer a definição manual de uma chave de revisão a partir de agora).
Para testar se o seu flake é compatível com nix flake-info você pode tentar executar flake-info
nele
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>