Note: nix-search-tv can provide similar functionality with additional config, and if you'd like a more unified UI that's not just focused on function lookup + highlighting I suggest checking it out!
A terminal UI for searching and browsing Noogle - the Nix function search engine. Search through Nix functions with fuzzy finding, preview documentation, and jump to source code.
- Fuzzy search through all Nix functions using fzf
- Flexible filtering - filter by any namespace prefix
- Initial query - start with a search term pre-populated
- Live preview of function documentation, type signatures, and examples
- Quick navigation: Jump to GitHub source code (Ctrl-O) or Noogle page (Ctrl-N)
- Offline caching - data cached for 24 hours
- Syntax highlighting via bat
nix run github:argosnothing/noogle-searchAdd to your flake inputs:
{
inputs = {
noogle-search.url = "github:argosnothing/noogle-search";
};
}Use in your configuration:
# NixOS configuration.nix
{ inputs, pkgs, ... }:
{
environment.systemPackages = [
inputs.noogle-search.packages.${pkgs.stdenv.hostPlatform.system}.default
];
}Start the search interface:
# Search all namespaces
noogle-search
# Start with a search query
noogle-search shell
# Filter to lib namespace
noogle-search -f lib
# Filter to lib namespace with initial query
noogle-search -f lib shell
# Filter to any prefix (e.g., lib.strings)
noogle-search -f lib.strings trim
# Filter to builtins
noogle-search -f builtins
# Filter to pkgs
noogle-search -f pkgsNamespace Filters:
- Ctrl-L: Filter to lib.* functions only
- Ctrl-B: Filter to builtins.* functions only
- Ctrl-P: Filter to pkgs.* functions only
- Ctrl-A: Show all functions (remove filter)
Actions:
- Ctrl-O: Open function source code on GitHub
- Ctrl-N: Open function page on Noogle.dev
- Ctrl-/: Toggle preview pane
When you apply a filter with -f or --filter:
- Only functions matching that prefix are shown
- The prefix is stripped from the display (e.g., "optionalString" instead of "lib.optionalString")
- You can filter by any prefix, not just top-level namespaces
- Functions are matched by their primary title, not aliases from other namespaces
noogle-search uses a cache to avoid excessive calls to noogle on a 24h timer in ~/.cache/noogle-search
- Data provided by Noogle.dev
- the Nix function search engine by @hsjobeki.
- The clankers who did most of the work.
fzf- fuzzy finderbat- syntax highlighting (optional, falls back to plain text)xdg-open- opening URLs in browser
