Ce référentiel contient les scripts et l'application Web pour search.nixos.org
.
L'idée initiale était de remplacer la recherche de packages et d'options NixOS qui récupérait un fichier JSON contenant tous les packages (ou options). Cette approche est bonne pour sa simplicité de configuration, mais a commencé à montrer ses problèmes lorsque le nombre de packages devenait de plus en plus grand. Je suis sûr que nous pourrions l'optimiser davantage, mais les idées sur ce que nous pourrions faire s'il y avait une base de données à l'arrière étaient trop tentantes de ne pas essayer.
Pour le backend, nous utilisons l'instance Elasticsearch qui est aimablement sponsorisée par bonsai.io. Sur le frontend, nous utilisons Elm.
Le cas d'utilisation que nous souhaitons résoudre est celui où un visiteur souhaite voir si un package existe ou rechercher les détails de certains packages.
Un utilisateur souhaite converger vers un résultat unique si possible. Plus de caractères sont ajoutés à une requête de recherche, plus la recherche est étroite et nous devrions afficher moins de résultats.
Le classement des résultats de recherche est également très important. Cela amènera des résultats de recherche plus pertinents en haut, car il est souvent difficile de produire une requête de recherche qui ne produira qu'un seul élément de résultat.
Un élément moins important, mais offrant une meilleure expérience utilisateur. sont des suggestions pour rédiger une meilleure requête de recherche. La fonctionnalité de suggestion devrait guider l'utilisateur à rédiger de meilleures requêtes qui, à leur tour, produiront de meilleurs résultats.
Pour commencer à développer, ouvrez un terminal et exécutez :
env --chdir=frontend nix develop -c yarn dev
Vous pouvez pointer votre navigateur vers http://localhost:3000
et commencer à développer. Toute modification des fichiers sources ( ./frontend/src
) déclenchera un rechargement à chaud d'une application.
main
, une action GitHub est déclenchée.yarn prod
../dist
) est ensuite déployée sur Netlify.Pour ajouter vos propres flocons à l'index de recherche, modifiez ./flakes/manual.toml.
Les types possibles sont github
, gitlab
, sourcehut
et git
(qui est la solution de secours pour tout type de référentiel git mais nécessite de définir manuellement une clé de révision à partir de maintenant).
Pour tester si votre flake est compatible avec nix flake-info, vous pouvez essayer d'exécuter flake-info
dessus.
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>