d9f579cf44
* refactor to include all necessary dependencies directly here * move indexer into monorepo * add snapshot tests and seperate sub.project for builtin types * add more missing builtins such as fromTOML |
||
---|---|---|
.github | ||
indexer | ||
scripts | ||
tests | ||
website | ||
.envrc | ||
.gitignore | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
projects.toml | ||
README.md |
Noogle
Noogle is a Nix API search engine. It allows you to search functions based on
their types and other attributes in nix
projects. In nixpkgs
especially
the builtins
and lib
attributes.
Current Features
- Beginners-friendly search for nix and nix-related functions
- Search by type signatures
- Sorted by relevance based on:
- id
- name
- category
- description
- example
- tree-search from one type to another
- functions from external libraries and nix frameworks
Available data
Currently there are the following subsets of nix functions available.
- nix/builtins
- nixpkgs/lib
- nixpkgs/build-support/trivial-builders
Search
- types are parsed and interpreted
- text search, looks in all metadata fields for an exact match word or character sequence. Noogle does not offer elastic search yet. And it remains open if it ever will.
If you have a function/set that you would like to find here, don't hesitate to file an issue.
View the prototype here
We need your help / what is missing
Extend available function
Currently there is only a limited set of data.
Because nixpkgs is very inconsistently documented it is really hard to extend the scope.
So if you want to help noogle, we must improve nixpkgs itself.
- Parsing
Types:
into a real type signature tree - Fix: line beginnings that include Asterisk (*) : Is interpreted as List-Markdown
- Upstream missing type informations (like in /lib/attrsets.nix)
- Write type signatures for the
builtins
in json - Add path, where each function can be imported from.
e.g. lib.makeOverridable
or lib.customisation.makeOverridable
it is available in both sets
Website
- improve share (deeplinks)
- social interactions
- Add filter by tags e.g. lib.lists
- Prepare for scaling up (we expect more users)
- Mobile optimization for reading on the go
Nixdoc / Indexer (fork)
- Parse types directly while also parsing comments
- Extend the scope, so that is can parse more comments
Contribute
Contributions are very welcome just file a PR or issue
Build this page
nix build .#
Develop
nix develop
This command creates the node_modules folder with all needed dependencies based on dream2nix.