このリポジトリには、 search.nixos.org
のスクリプトと Web アプリケーションが含まれています。
当初のアイデアは、すべてのパッケージ (またはオプション) を含む 1 つの JSON ファイルを取得する NixOS パッケージとオプション検索を置き換えることでした。このアプローチは、セットアップが単純な点では優れていますが、パッケージの数がますます大きくなると、問題が発生し始めました。さらに最適化できると確信していますが、背後にデータベースがあれば何ができるだろうかという考えは、試したくありませんでした。
バックエンドには、bonsai.io のご協力による Elasticsearch インスタンスを使用しています。フロントエンドでは Elm を使用しています。
私たちが解決したいユースケースは、訪問者がパッケージが存在するかどうかを確認したい、または特定のパッケージの詳細を調べたいということです。
ユーザーは、可能であれば 1 つの結果に収束したいと考えています。検索クエリに追加される文字数が増えるほど、検索範囲が狭くなり、表示される結果は少なくなります。
検索結果のランキングも非常に重要です。多くの場合、結果項目を 1 つだけ出力する検索クエリを作成するのは難しいため、これにより、より関連性の高い検索結果が上位に表示されます。
それほど重要ではありませんが、より良いユーザー エクスペリエンスを提供します。より適切な検索クエリを作成するための提案です。提案機能は、ユーザーがより良いクエリを作成できるように導き、結果としてより良い結果を生み出す必要があります。
開発を開始するには、ターミナルを開いて次を実行します。
env --chdir=frontend nix develop -c yarn dev
ブラウザでhttp://localhost:3000
を指定して開発を開始できます。ソース ファイル ( ./frontend/src
) に変更を加えると、アプリケーションのホット リロードがトリガーされます。
main
ブランチへのコミットごとに、GitHub アクションがトリガーされます。yarn prod
コマンドを使用して、Web アプリケーションの実稼働バージョンをビルドします。./dist
内) は Netlify にデプロイされます。独自のフレークを検索インデックスに追加するには、./flakes/manual.toml を編集します。
可能なタイプはgithub
、 gitlab
、 sourcehut
、およびgit
(あらゆる種類の git リポジトリのフォールバックですが、現時点ではリビジョン キーを手動で設定する必要があります) です。
あなたのフレークが nix flake-info と互換性があるかどうかをテストするには、それに対してflake-info
実行してみてください。
$ nix run github:nixos/nixos-search#flake-info -- flake <your flake handle>