1
Fork 0
mirror of https://github.com/benkoppe/nixsearch synced 2026-09-19 13:19:58 -07:00
No description
  • Rust 93%
  • JavaScript 4.9%
  • CSS 1.6%
  • Nix 0.5%
Find a file
ben 87e3649068
fix(web): only show broken packages status in red
Hide false or unknown broken status and retain the bullet when package summary metadata is missing. Cover all three states in rendering tests.

Fixes #15
2026-09-05 12:34:00 -07:00
.github/workflows ci: fix Komodo production environment lookup 2026-05-28 13:46:35 -07:00
assets feat: Add hero-notext asset 2026-05-29 09:27:29 -07:00
crates fix(web): only show broken packages status in red 2026-09-05 12:34:00 -07:00
fixtures refactor(web,service): remove legacy public query compatiblity 2026-06-21 23:34:37 -07:00
nix flake: use process-compose for dev 2026-06-08 15:47:05 -07:00
.envrc Add basic nix flake w/ cargo devshell 2026-05-16 12:54:37 -04:00
.gitignore chore: Add DS_Store to gitignore 2026-05-28 20:12:49 -07:00
Cargo.lock Serve sitemaps from prepared artifacts (#5) 2026-06-30 00:38:04 -07:00
Cargo.toml Serve sitemaps from prepared artifacts (#5) 2026-06-30 00:38:04 -07:00
deny.toml Package with nix 2026-05-24 01:33:13 -04:00
flake.lock flake: use process-compose for dev 2026-06-08 15:47:05 -07:00
flake.nix flake: use process-compose for dev 2026-06-08 15:47:05 -07:00
GUIDELINES.md docs: update GUIDELINES.md 2026-06-14 09:31:06 -07:00
LICENSE Add MIT License 2026-05-29 15:41:00 -04:00
nixsearch.example.toml fix(web): harden public SEO metadata 2026-06-29 12:51:38 -07:00
opencode.json docs: add opencode config with references 2026-07-05 11:36:31 -07:00
PLAN.md chore: Rename to nixsearch 2026-05-26 08:15:05 -04:00
README.md fix(web): harden public SEO metadata 2026-06-29 12:51:38 -07:00

nixsearch

The Nix ecosystem has thousands of packages and options. Many solutions exist to help with rummaging through these options, and after running into frustrations with them, this is mine.

Goals

  • Fast search core built with tantivy
    • Support a wide array of producer strategies, so many data sources can be easily mixed together
  • Magical web frontend leveraging Datastar
  • MCP frontend, to easily feed agents with options & source code

Public deployment and SEO

Set server.public_url to the canonical production origin before exposing nixsearch publicly:

[server]
public_url = "https://nixsearch.example.com"

When server.public_url is unset, public SEO is intentionally disabled: pages emit noindex, canonical/Open Graph metadata is omitted, robots.txt disallows crawling, and /sitemap.xml returns 404. This keeps local and private deployments out of search indexes by default.

Development

This section should be expanded on. But utilize the devenv defined in this flake with nix develop .#. Then, the cli can be run with cargo run -p nixsearch -- <command>.

Inspirations

This section can also be though of as "Motivations", since these past projects are what led to nixsearch.

  • nixos-search: The official solution. Limited to primarily Nixpkgs & NixOS options.
  • Searchix: I was a heavy Searchix user, and nixsearch is really just exactly what I wanted out of Searchix.
    Some key differences are:
    • Reliability
      • I would have frequent issues loading pages on Searchix, especially on unreliable internet
    • Better search algorithm
      • Tantivy provides a very strong search foundation, allowing nixsearch to resemble the powerful Grasshopper-powered search of nixos-search without compromises.
    • Refs as a primitive
      • Searchix doesn't have a solution to deal with multiple refs of the same source, such as 25.11 and unstable.
  • NuschtOS/search: Another solution that focuses on building everything statically.

AI Disclosure

AI was utilized heavilty in the development of this project. But LLMs still can't manage to do even a search bar on their own, so nearly all code has gone through human eyes and hands. See the PLAN.md document to understand how context was initially scaffolded for this codebase.

Thanks for checking out nixsearch!