nt/nt/primitives/std
2026-01-28 12:56:35 +10:00
..
naive move primitives/bootstrap -> primitives/std 2026-01-28 12:56:35 +10:00
prim move primitives/bootstrap -> primitives/std 2026-01-28 12:56:35 +10:00
attrs.nix move primitives/bootstrap -> primitives/std 2026-01-28 12:56:35 +10:00
default.nix move primitives/bootstrap -> primitives/std 2026-01-28 12:56:35 +10:00
README.md move primitives/bootstrap -> primitives/std 2026-01-28 12:56:35 +10:00

Types of Types

This is the convention I personally use when referring to types:

  • Primitive Types: The base types Nix provides, accessible via builtins.typeOf
  • Naive Types: An attempt at constructing a non-primitive type without using NixTypes. nixpkgs.lib makes use of naive types, and so does the bootstrapping process for NixTypes. A common example is result = success: value: { inherit success value; }.
  • Types / NT Types: Any type provided by or compatible with the NixTypes standard

/nt/primitives/bootstrap

None of these functions/types/etc are exported for users of NixTypes! So they should remain as simple and minimal as possible to avoid extra work maintaining. Instead, most of these will be reimplemented post-bootstrap to be NixType compatible.