nix attrsets 的漂亮打印

qkn*_*ght 8 nixos nix

在 nix 中开发时,我通常用于builtins.trace调试:

在代码中

a = { foo = "bar"; ... more complex nested attrset ...};
builtins.trace a a;
Run Code Online (Sandbox Code Playgroud)

在 nix-repl 中

在复杂的数据结构上使用:p a也确实很难阅读。

问题

然而,输出只是一行,没有任何格式,对于复杂的数据结构,这几乎无法用于调试。

问题

nix 中是否有一个漂亮的打印函数,它可以进行一些缩进和添加换行符?或者更好的彩色输出?

理想输出

我想看到这样的东西:

default = {
  active = { 
    check_ssl = [
      {
        tags = [ "mycustomtag" ];
        host = "kotalla.de";
        ipv6 = false;
        name = "ssl11";
      }
      {
        tags = [ "mycustomtag" ];
        host = "kotalla.de";
        ipv6 = false;
        name = "ssl2";
      }
    ];
    check_http = [
      {
        host = "kotalla.de";
        port = 80;
        url = "/foo";
        contains = "Labor";
        name = "http";
      }
    ];
    check_ssh = [
      {
        host = "mail.lastlog.de";
        port = 20202;
        name = "ssh";
      }
    ];
  };
Run Code Online (Sandbox Code Playgroud)

我的黑客

我所知道的是:

ens*_*ens 2

Nixfmt 是流行的 Nix 代码格式化程序: https ://github.com/Gabriel439/nixfmt