#nix #gtk #nix-store

bin+lib nix-query-tree-viewer

GTK 查看器,用于显示 nix-store --query --tree 输出的信息

3 个不稳定版本

0.2.1 2021年9月10日
0.2.0 2020年2月22日
0.1.0 2020年2月21日

#331 in GUI

MIT 许可证

275KB
2K SLoC

nix-query-tree-viewer

Actions Status crates.io dependency status MIT license

nix-query-tree-viewer 是一种方便的方式来可视化 Nix 存储中给定路径的依赖项的输出。

image of nix-query-tree-viewer

这是与 nix-store --query --tree <PATH> 输出的相同的树形信息,但 nix-query-tree-viewer 使其更容易理解和交互。

使用方法

您可以通过传递 Nix 存储中的路径来运行 nix-query-tree-viewer

$ nix-query-tree-viewer /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0

安装

nix-query-tree-viewer 可以使用 Nix 或 Cargo 安装。

使用 nix-env 安装

$ nix-env -f channel:nixos-unstable -iA nix-query-tree-viewer

如果您只想使用 nix-query-tree-viewer,这将非常方便。

使用 cargo 安装

$ cargo install nix-query-tree-viewer

您需要确保环境中可用的 GTK 库才能使此功能正常工作。

为什么使用 nix-query-tree-viewer

命令 nix-store --query --tree 可用于以树形格式查看 Nix 存储中路径的依赖项

$ nix-store --query --tree /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
/nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0
+---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27
|   +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
+---/nix/store/cinw572b38aln37glr0zb8lxwrgaffl4-bash-4.4-p23
|   +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
|   +---/nix/store/cinw572b38aln37glr0zb8lxwrgaffl4-bash-4.4-p23 [...]
+---/nix/store/hlnxw4k6931bachvg5sv0cyaissimswb-gcc-7.4.0-lib
|   +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
|   +---/nix/store/hlnxw4k6931bachvg5sv0cyaissimswb-gcc-7.4.0-lib [...]
+---/nix/store/f5wl80zkrd3fc1jxsljmnpn7y02lz6v1-glibc-2.27-bin
|   +---/nix/store/681354n3k44r8z90m35hm8945vsp95h1-glibc-2.27 [...]
...

这对于简单的派生来说没问题,但对于具有深层依赖树的路径来说会变得非常复杂。

nix-query-tree-viewer 通过默认折叠树的分支来帮助解决这个问题。点击分支可以让你深入到有趣的分支。

例如,下面是上述相同的图片,但有两个分支被打开

image of nix-query-tree-viewer with two branches open

查找派生路径

您可以使用 nix-buildnix-instantiate 来轻松查找派生路径。

例如,如果您想找到 Nix 存储中 gcc 的路径,您可以使用 nix-build

$ nix-build '<nixpkgs>' -A gcc --no-out-link
...
/nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0

如果您想找到 gcc.drv 文件的路径,您可以使用 nix-instantiate

$ nix-instantiate '<nixpkgs>' -A gcc
...
/nix/store/dyxdjxyszmlz29mb0jr9qkncj5l41dai-gcc-wrapper-7.4.0.drv

您应该可以将 /nix/store/ghzg4kg0sjif58smj2lfm2bdvjwim85y-gcc-wrapper-7.4.0/nix/store/dyxdjxyszmlz29mb0jr9qkncj5l41dai-gcc-wrapper-7.4.0.drv 传递给 nix-query-tree-viewer

通常情况下,将 nix-build 的输出传递给 nix-query-tree-viewer 可以让您查看推导式的运行时依赖,而将 nix-instantiate 的输出传递过去将让您看到推导式的构建时依赖。

贡献

请随意为任何错误/问题/建议/改进打开一个问题或PR。

开发

您可以通过运行 nix-shell 来进入开发环境。

nix-shell 提供了构建所需的系统库,以及 rustup

rustup 可以用来获取最新的 Rust 编译器和相关工具

$ rustup toolchain install 1.55.0

现在您应该拥有 cargorustc,可以用它们来构建项目

$ cargo build

依赖项

~17MB
~400K SLoC