https://noogle.dev - like hoogle but for nix
Go to file
Johannes Kirschbauer d9f579cf44
Feature/monorepo (#24)
* 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
2023-02-25 13:14:40 +01:00
.github Update issue templates 2023-01-25 16:34:22 +01:00
indexer Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
scripts Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
tests Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
website Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
.envrc INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
.gitignore Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
flake.lock Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
flake.nix Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
LICENSE Create LICENSE 2023-01-25 16:23:32 +01:00
projects.toml Feature/monorepo (#24) 2023-02-25 13:14:40 +01:00
README.md add pre-commit checks (#16) 2023-01-25 15:54:44 +01:00

Noogle

Website GitHub top language GitHub Workflow Status built-with-dream2nix

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
  • 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.