https://noogle.dev - like hoogle but for nix
Go to file
2023-02-02 11:23:40 +01:00
.github Update issue templates 2023-01-25 16:34:22 +01:00
queries feature/deeplinks 2023-01-24 21:02:17 +01:00
scripts refactor to include all necessary dependencies directly here 2023-02-02 11:23:40 +01:00
website refactor to include all necessary dependencies directly here 2023-02-02 11:23:40 +01:00
.envrc INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
.gitignore refactor to include all necessary dependencies directly here 2023-02-02 11:23:40 +01:00
flake.lock refactor to include all necessary dependencies directly here 2023-02-02 11:23:40 +01:00
flake.nix refactor to include all necessary dependencies directly here 2023-02-02 11:23:40 +01:00
LICENSE Create LICENSE 2023-01-25 16:23:32 +01:00
nix_systems INIT: first prototype of frontend 2022-11-26 10:36:08 +01:00
projects.toml refactor to include all necessary dependencies directly here 2023-02-02 11:23: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.