Jump to content

Noogle: Difference between revisions

From Official NixOS Wiki
Klinger (talk | contribs)
added link to noogle.dev
Lukec (talk | contribs)
m Fix grammar and slight rewording for clarity
 
Line 1: Line 1:
= Noogle =
= Noogle =


[https://noogle.dev Noogle] is a community maintained search page designed specifically for NixOS users and maintainers. It knows about all standard nix functions. Which are typically used via <code>builtins</code>, <code>lib</code> and the <code>pkgs</code> attributes.
[https://noogle.dev Noogle] is a community maintained search page designed specifically for NixOS users and maintainers. It knows about all standard nix functions which are typically used via the <code>builtins</code>, <code>lib</code> and <code>pkgs</code> attributes.


Noogle.dev is especially useful when:  
Noogle.dev is especially useful when:  
Line 7: Line 7:
* you are looking for a function doing a certain transformation. For example: [https://noogle.dev/q?from=list&to=attrset List -> AttributeSet] [https://noogle.dev/q?from=list&to=string List -> String] [https://noogle.dev/q?from=attrset&to=list AttributeSet -> List]
* you are looking for a function doing a certain transformation. For example: [https://noogle.dev/q?from=list&to=attrset List -> AttributeSet] [https://noogle.dev/q?from=list&to=string List -> String] [https://noogle.dev/q?from=attrset&to=list AttributeSet -> List]


* quick companion looking up how to use a certain function.
* quick companion for looking up how to use a certain function.
* fuzzy searching within all the functions
* fuzzy searching within all the functions
* finding the source position of functions
* finding the source position of functions
Line 13: Line 13:
== Discoverability ==
== Discoverability ==


The indexing of functions is done via tree-traversal of the nix attribute sets.
Functions are indexed via tree-traversal of the nix attribute sets.
Nix's position tracking is used in conjunction with static analysis based on the rnix AST to backtrace each function to its declaration in the source code.
Nix's position tracking is used in conjunction with static analysis based on the rnix AST to backtrace each function to its declaration in the source code.


Line 24: Line 24:
Noogle uses internal function characteristics and properties of the nix evaluator to detect aliases.
Noogle uses internal function characteristics and properties of the nix evaluator to detect aliases.


For example: <code>lib.lists.concatLists</code> is the same as calling <code>lib.concatLists</code> or <code> builtins.concatLists</code>  
For example: <code>lib.lists.concatLists</code> is the same as calling <code>lib.concatLists</code> or <code>builtins.concatLists</code>  


== Updates ==
== Updates ==


Noogle is updated daily against the master branch of nix (builtins) and nixpkgs (lib,pkgs,...)
Noogle is updated daily against the master branch of nix (builtins) and nixpkgs (lib, pkgs,...)


== API ==
== API ==

Latest revision as of 21:26, 24 March 2026

Noogle

Noogle is a community maintained search page designed specifically for NixOS users and maintainers. It knows about all standard nix functions which are typically used via the builtins, lib and pkgs attributes.

Noogle.dev is especially useful when:

  • quick companion for looking up how to use a certain function.
  • fuzzy searching within all the functions
  • finding the source position of functions

Discoverability

Functions are indexed via tree-traversal of the nix attribute sets. Nix's position tracking is used in conjunction with static analysis based on the rnix AST to backtrace each function to its declaration in the source code.

Documentation content stems from doc-comments or from the builtins c++ documentation in nix in case it is a builtins function or an alias to a builtins function.

All the documentation content is essentially the same as in the Nixpkgs Manual. The difference is that noogle contains all functions, where the Nixpkgs Manual only contains parts of lib.

Aliases

Noogle uses internal function characteristics and properties of the nix evaluator to detect aliases.

For example: lib.lists.concatLists is the same as calling lib.concatLists or builtins.concatLists

Updates

Noogle is updated daily against the master branch of nix (builtins) and nixpkgs (lib, pkgs,...)

API

Search query params

  route: /q
  queries: term from to page limit
  Example: https://noogle.dev/q?from=list&to=list&limit=20&page=2&term=map

Download the dataset at: http://noogle.dev/api/v1/data