config.nix
当初始化nixpkgs
时,例如pkgs = import <nixpkgs> {}
,
nixpkgs
的初始化代码会读取~/.config/nixpkgs/config.nix
作为nixpkgs.config
参数。
如果你对nixpkgs
的初始化感兴趣,可以去看看这部分的源代码<nixpkgs>/pkgs/top-level/impure.nix
。
config.nix
文件(即nixpkgs.config
)接受的参数可以参考nixpkgs的官方文档的
config Options Reference章节,
或是去看nixpkgs这部分的源码<nixpkgs>/pkgs/top-level/config.nix
。
下面是添加了注解的我的config.nix
:
{
禁用安装非本地的包,比如禁止x86_64-linux的包被安装到aarch64-linux上。
allowUnsupportedSystem = false;
allowUnfree = true;
packageOverrides = pkgs: rec {
添加nix user repository (NUR)到nixpkgs里。
nur = import (builtins.fetchTarball "https://github.com/nix-community/NUR/archive/master.tar.gz") {
pkgs = pkgsu;
};
添加非稳定版的nixpkgs到nixpkgs里,
比如非稳定版的hello可以通过pkgs.pkgsu.hello
来访问。
pkgsu = import (builtins.fetchTarball "https://github.com/NixOS/nixpkgs/archive/master.tar.gz") {};
添加flake-compat,用于在nix expression中使用flake的包
flake-compat = import (builtins.fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/0f9255e01c2351cc7d116c072cb317785dd33b33.tar.gz";
sha256 = "0m9grvfsbwmvgwaxvdzv6cmyvjnlww004gfxjvcl806ndqaxzy4j";
});
};
}