Home

Awesome

yants

This is a tiny type-checker for data in Nix, written in Nix.

Features

Currently lacking:

Primitives & simple polymorphism

simple

Structs

structs

Nested structs!

nested structs

Enums!

enums

Functions!

functions

Usage

  1. Import into scope with with:

    {
      inputs.yants.url = "github:divnix/yants";
      outputs = inputs: {
        someType = with inputs.yants; # code using yants
      };
    }
    
  2. Import into scope and add log context:

    {
      inputs.yants.url = "github:divnix/yants";
      outputs = inputs: let
        rootLogYants = inputs.yants "my-lib";
        leafLogYants = rootLogYants "leaf";
      in {
        someType = with leafLogYants; # code using yants
      };
    }
    

Please see my Nix one-pager for more generic information about the Nix language and what the above constructs mean.

Stability

The current API of Yants is not yet considered stable, but it works fine and should continue to do so even if used at an older version.

Yants' tests use Nix versions above 2.6 - compatibility with older versions is not guaranteed.