이 저장소에는 search.nixos.org
용 스크립트와 웹 애플리케이션이 포함되어 있습니다.
초기 아이디어는 모든 패키지(또는 옵션)가 포함된 하나의 JSON 파일을 가져오는 NixOS 패키지 및 옵션 검색을 대체하는 것이었습니다. 이 접근 방식은 설정이 간단하기 때문에 좋지만 패키지 수가 점점 커지면서 문제가 나타나기 시작했습니다. 더 최적화할 수 있다고 확신하지만, 뒤에 데이터베이스가 있다면 우리가 할 수 있는 일이 무엇인지는 시도하지 않으려는 유혹을 불러일으켰습니다.
백엔드의 경우 bonsai.io에서 후원하는 Elasticsearch 인스턴스를 사용하고 있습니다. 프론트엔드에서는 Elm을 사용하고 있습니다.
우리가 해결하려는 사용 사례는 방문자가 패키지가 존재하는지 확인하거나 특정 패키지의 세부 정보를 조회하려는 것입니다.
사용자는 가능하다면 단일 결과로 수렴하기를 원합니다. 검색 쿼리에 더 많은 문자가 추가될수록 검색 범위가 더 좁아지고 더 적은 결과가 표시됩니다.
검색 결과의 순위도 매우 중요합니다. 하나의 결과 항목만 출력하는 검색어를 생성하는 것이 어려운 경우가 많기 때문에 이렇게 하면 더 관련성이 높은 검색 결과가 맨 위에 표시됩니다.
덜 중요하지만 더 나은 사용자 경험을 제공합니다. 더 나은 검색어를 작성하기 위한 제안입니다. 제안 기능은 사용자가 더 나은 쿼리를 작성하도록 안내하여 결과적으로 더 나은 결과를 생성해야 합니다.
개발을 시작하려면 터미널을 열고 다음을 실행하세요.
env --chdir=frontend nix develop -c yarn dev
브라우저에서 http://localhost:3000
가리키고 개발을 시작할 수 있습니다. 소스 파일( ./frontend/src
)을 변경하면 애플리케이션의 핫 리로드가 트리거됩니다.
main
브랜치에 커밋할 때마다 GitHub Action이 트리거됩니다.yarn prod
명령을 사용하여 웹 애플리케이션의 프로덕션 버전을 빌드합니다../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>