向Nix询问有关给定软件包的元数据

时间:2019-05-13 19:12:34

标签: nix

我在macOS和(非NixOS)Linux上使用Nix。我想给Nix一个包或属性名称,并告诉我

  1. Nix知道的软件包的最新版本号和
  2. 对应的.nix文件的本地副本的路径(或者也许是GitHub上nixpkgs存储库中该.nix文件的URL)。

我实质上是在寻找与Homebrew的brew info packagename相当的Nix。

如何让Nix给我这些信息?

2 个答案:

答案 0 :(得分:1)

也许有更好的方法,例如使用nix-env,但我通常为此目的使用nix repl

$ nix repl '<nixpkgs>'
Welcome to Nix version 2.2.2. Type :? for help.

Loading '<nixpkgs>'...
Added 10069 variables.

nix-repl> docker-c[TAB]     
docker-compose         docker-credential-gcr
nix-repl> docker-compose.version
"1.23.1"

答案 1 :(得分:1)

使用CLI上的nix-env,我认为我们目前(相对)方便地可以做到的最好的就是JSON或XML:

$ nix-env --query --available --attr nixpkgs.hello --meta --json

# Or in terse form:
$ nix-env -qaA nixpkgs.hello --json

输出或输入都不是人类友好的,典型的Nix可用性...

.nix文件的路径被列为position,在REPL中也如罗伯特的简洁答案中的hello.meta.position所示。值得一提的是nix edit nixpkgs.hello,用于打开文件。