nix 表达式“<nixpkgs>”是什么?

mhe*_*rzl 5 nixos nix nixpkgs

查询hackage包时,手册建议使用命令:

$ nix-env -f "<nixpkgs>" -qaP -A haskellPackages
Run Code Online (Sandbox Code Playgroud)

因此,在搜索 Haskell 包时,我们将“活动 Nix 表达式”定义为“<nixpkgs>”。

这个表达式“<nixpkgs>”是什么意思?它在哪里定义?我没有该名称的频道,也没有在我的/etc/nixos/configuration.nix文件中看到它出现。

che*_*ner 6

来自man nix-env(以及可能的其他来源):

   NIX_PATH
       A colon-separated list of directories used to look up Nix
       expressions enclosed in angle brackets (i.e., <path>). For
       instance, the value

           /home/eelco/Dev:/etc/nixos

       will cause Nix to look for paths relative to /home/eelco/Dev and
       /etc/nixos, in that order. It is also possible to match paths
       against a prefix. For example, the value

           nixpkgs=/home/eelco/Dev/nixpkgs-branch:/etc/nixos

       will cause Nix to search for <nixpkgs/path> in
       /home/eelco/Dev/nixpkgs-branch/path and /etc/nixos/nixpkgs/path.
Run Code Online (Sandbox Code Playgroud)

在我的机器上,NIX_PATHnixpkgs=/Users/me/.nix-defexpr/channels/nixpkgs,所以<nixpkgs>指的是nixpkgs我订阅的频道。

一般来说,<...>会导致路径不按字面意思处理,而是按照您的NIX_PATH.