漂亮的nix attrsets打印

时间:2018-01-16 16:38:31

标签: nix nixos

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

代码中的

a = { foo = "bar"; ... more complex nested attrset ...};
builtins.trace a a;
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";
      }
    ];
  };

我的黑客

我所知道的:

3 个答案:

答案 0 :(得分:0)

我们现在编写了自己的格式化程序:

https://github.com/nixcloud/nix-beautify

答案 1 :(得分:0)

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

答案 2 :(得分:0)

https://github.com/haskell-nix/hnix/tree/50e63f80afa8323b25b692533e731eea641e56af#parse--print

<块引用>

使用 hnix 解析文件并漂亮地打印结果:

hnix file.nix