Dieses Repository enthält die Skripte und die Webanwendung für search.nixos.org
.
Die ursprüngliche Idee bestand darin, die NixOS-Paket- und Optionssuche zu ersetzen, bei der eine JSON-Datei abgerufen wurde, die alle Pakete (oder Optionen) enthielt. Dieser Ansatz ist wegen seiner einfachen Einrichtung gut, zeigte jedoch seine Probleme, als die Anzahl der Pakete immer größer wurde. Ich bin mir sicher, dass wir es noch weiter optimieren könnten, aber die Vorstellung, was wir alles tun könnten, wenn es eine Datenbank im Hintergrund gäbe, wäre zu verlockend, es nicht zu versuchen.
Als Backend verwenden wir die Elasticsearch-Instanz, die freundlicherweise von bonsai.io gesponsert wird. Im Frontend verwenden wir Elm.
Der Anwendungsfall, den wir lösen möchten, besteht darin, dass ein Besucher sehen möchte, ob ein Paket existiert, oder die Details eines bestimmten Pakets nachschlagen möchte.
Ein Benutzer möchte nach Möglichkeit zu einem einzigen Ergebnis konvergieren. Je mehr Zeichen zu einer Suchanfrage hinzugefügt werden, desto enger wird die Suche und desto weniger Ergebnisse werden angezeigt.
Sehr wichtig ist auch das Ranking der Suchergebnisse. Dadurch werden relevantere Suchergebnisse an die Spitze gebracht, da es oft schwierig ist, eine Suchanfrage zu erstellen, die nur ein Ergebniselement ausgibt.
Eine weniger wichtige, aber bessere Benutzererfahrung. sind Vorschläge zum Schreiben besserer Suchanfragen. Die Vorschlagsfunktion soll den Benutzer dazu anleiten, bessere Abfragen zu schreiben, die wiederum zu besseren Ergebnissen führen.
Um mit der Entwicklung zu beginnen, öffnen Sie ein Terminal und führen Sie Folgendes aus:
env --chdir=frontend nix develop -c yarn dev
Sie können Ihren Browser auf http://localhost:3000
verweisen und mit der Entwicklung beginnen. Alle Änderungen an Quelldateien ( ./frontend/src
) lösen einen Hot-Reload einer Anwendung aus.
main
wird eine GitHub-Aktion ausgelöst.yarn prod
eine Produktionsversion der Webanwendung../dist
) wird dann auf Netlify bereitgestellt.Um Ihre eigenen Flakes zum Suchindex hinzuzufügen, bearbeiten Sie ./flakes/manual.toml.
Mögliche Typen sind github
, gitlab
, sourcehut
und git
(das ist der Fallback für jede Art von Git-Repository, erfordert aber ab sofort die manuelle Festlegung eines Revisionsschlüssels).
Um zu testen, ob Ihr Flake mit nix flake-info kompatibel ist, können Sie versuchen, flake-info
dagegen auszuführen
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>