noogle/README.md

92 lines
2.7 KiB
Markdown
Raw Normal View History

2023-01-25 17:54:44 +03:00
# [Noogle](https://noogle.dev)
2023-01-16 12:41:07 +03:00
![Website](https://img.shields.io/website?down_message=noogle.dev&up_message=noogle.dev&url=https%3A%2F%2Fnoogle.dev)
![GitHub top language](https://img.shields.io/github/languages/top/hsjobeki/noogle)
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/hsjobeki/noogle/main.yml)
2023-01-25 17:54:44 +03:00
![built-with-dream2nix](https://img.shields.io/badge/built%20with-dream2nix-blue)
2022-12-06 12:58:20 +03:00
2023-01-25 17:54:44 +03:00
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.
2022-11-26 12:36:08 +03:00
2023-01-25 17:54:44 +03:00
## Current Features
2022-11-26 12:36:08 +03:00
2023-01-25 17:54:44 +03:00
- [x] Beginners-friendly search for nix and nix-related functions
- [x] Search by **type** signatures
- [x] Sorted by relevance based on:
- id
2022-11-26 12:51:42 +03:00
- name
2023-01-25 17:54:44 +03:00
- category
- description
- example
- [ ] tree-search from one type to another
- [ ] functions from external libraries and nix frameworks
2022-11-26 12:36:08 +03:00
2023-01-25 17:54:44 +03:00
## Available data
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
Currently there are the following subsets of nix functions available.
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
- nix/**builtins**
- nixpkgs/**lib**
- nixpkgs/build-support/**trivial-builders**
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
### Search
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
- 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.
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
> If you have a function/set that you would like to find here,
> don't hesitate to file an issue.
2022-12-18 16:21:00 +03:00
2023-01-25 17:54:44 +03:00
**View the prototype [here](https://noogle.dev)**
2022-11-26 13:13:31 +03:00
2022-12-06 12:58:20 +03:00
## We need your help / what is missing
2023-01-25 17:54:44 +03:00
### 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
- [x] Upstream missing type informations (like in /lib/attrsets.nix)
- [x] 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
- [x] improve share (deeplinks)
- [ ] social interactions
- [ ] Add filter by tags e.g. lib.lists
- [ ] Prepare for scaling up (we expect more users)
- [x] 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
2022-12-06 12:58:20 +03:00
2022-12-06 12:58:48 +03:00
## Contribute
2022-12-06 12:59:06 +03:00
Contributions are very welcome just file a PR or issue
2022-11-26 12:36:08 +03:00
2022-11-26 12:51:42 +03:00
### Build this page
2022-11-26 12:36:08 +03:00
2022-11-26 12:51:42 +03:00
`nix build .#`
2022-11-26 12:36:08 +03:00
2022-11-26 12:51:42 +03:00
### Develop
2022-11-26 12:36:08 +03:00
`nix develop`
2023-01-25 17:54:44 +03:00
This command creates the node_modules folder
with all needed dependencies based on dream2nix.