https://noogle.dev - nix function exploring.
Go to file
2023-02-08 14:49:11 +01:00
.github Update issue templates 2023-01-25 16:34:22 +01:00
components add line numbers 2023-02-08 14:49:11 +01:00
models add line numbers 2023-02-08 14:49:11 +01:00
pages Add OpenSearch description (#17) 2023-01-25 22:45:33 +01:00
public Add OpenSearch description (#17) 2023-01-25 22:45:33 +01:00
queries add line numbers 2023-02-08 14:49:11 +01:00
scripts patch derivation into docs 2023-02-05 11:40:33 +01:00
styles Feature/better highlight (#18) 2023-01-30 15:13:39 +01:00
types feature/deeplinks 2023-01-24 21:02:17 +01:00
.envrc INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
.eslintrc.json INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
.gitignore Feature/better highlight (#18) 2023-01-30 15:13:39 +01:00
createEmotionCache.ts INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
flake.lock add line numbers 2023-02-08 14:49:11 +01:00
flake.nix improves: indentation 2023-02-02 17:18:31 +01:00
LICENSE Create LICENSE 2023-01-25 16:23:32 +01:00
next.config.js add real nixpkgs metadata from enhanced nixdoc 2022-12-03 15:25:32 +01:00
nix_systems INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
package-lock.json Feature/function of the day (#9) 2023-01-20 13:08:20 +01:00
package.json Feature/function of the day (#9) 2023-01-20 13:08:20 +01:00
README.md add pre-commit checks (#16) 2023-01-25 15:54:44 +01:00
tsconfig.json 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.