/nix-doc

A Nix documentation lookup tool that quickly dumps the docs of the library function you're interested in

Primary LanguageRustGNU Lesser General Public License v3.0LGPL-3.0

nix-doc

A Nix documentation search tool.

Setup

$ nix-env -i -f ./default.nix
# or if you don't want to use nix,
$ cargo install nix-doc

Usage

nix-doc SearchRegex [Directory]

Example output:

nixpkgs$ nix-doc callPackage
   Call the package function in the file `fn' with the required
   arguments automatically.  The function is called with the
   arguments `args', but any missing arguments are obtained from
   `autoArgs'.  This function is intended to be partially
   parameterised, e.g.,

   callPackage = callPackageWith pkgs;
   pkgs = {
   libfoo = callPackage ./foo.nix { };
   libbar = callPackage ./bar.nix { };
   };

   If the `libbar' function expects an argument named `libfoo', it is
   automatically passed as an argument.  Overrides or missing
   arguments can be supplied in `args', e.g.

   libbar = callPackage ./bar.nix {
   libfoo = null;
   enableX11 = true;
   };
callPackageWith = autoArgs: fn: args: ...
# ./lib/customisation.nix:117
─────────────────────────────────────────────
   Like callPackage, but for a function that returns an attribute
   set of derivations. The override function is added to the
   individual attributes.
callPackagesWith = autoArgs: fn: args: ...
# ./lib/customisation.nix:127
─────────────────────────────────────────────
   Similar to callPackageWith/callPackage, but without makeOverridable
callPackageWith = autoArgs: fn: args: ...
# ./pkgs/development/beam-modules/lib.nix:7

TODO

  • Generate tags files/otherwise generate a database file to speed up result generation.
  • Use Nix itself with builtins.unsafeGetAttrPos to find our functions for us, but we handle pulling out the docs. (requires a fair refactor)
  • Fix the dedent again. We are eating indents we should not be eating e.g. in the example above.

Project information

Everyone is expected to follow the code of conduct while participating in this project.