如何为 NixOS/nixpkgs 创建本地存储库?

如何为 NixOS/nixpkgs 创建本地存储库?

我找到的创建 Nix 软件包本地存储库的所有说明都涉及创建主nixpkgs存储库的本地克隆并添加到其中。

有没有办法创建一个仅包含本地附加包的小型存储库?

答案1

是的,只需为单个包创建一个表达式即可。您可以通过从 ni​​xpkgs 获取依赖项pkgs = import <nixpkgs> {};

答案2

这篇博文有一些细节:http://sandervanderburg.blogspot.no/2014/07/managing-private-nix-packages-outside.html

对于更多底层的从头开始的细节,有 nix-pill 系列:http://lethalman.blogspot.no/2014/07/nix-pill-1-why-you-should-give-it-try.html

但我认为基本方法是创建您自己的版本~/.nix-defexpr/channels_root/nixos/pkgs/top-level/all-packages.nix,例如mypkgs.nix通过导入从默认“repo”添加依赖项<nixpkgs>

通过执行以下操作安装软件包nix-env -f mypkgs.nix -i DERIVATION_NAME

但由于 nix 是基于一种成熟的语言,所以我猜你可以有无数种方法来做到这一点。

答案3

我绝不是 Nix 专家,所以我不知道这是否是最好的方法,但这就是我所做的。我有一个本地包存储库$HOME/nix-local,其中包含许多包文件vault/default.nixblackbox/default.nix以及一个config.nix定义packageOverrides调用它们的文件。所以像这样:

$ cat nix-local/config.nix
{
  packageOverrides = pkgs: rec {
    vault = pkgs.callPackage ./vault {};
    blackbox = pkgs.callPackage ./blackbox {};
    # ...
}

$ export NIXPKGS_CONFIG=$HOME/nix-local/config.nix    

您可以在以下位置查看完整的存储库:https://github.com/telent/nix-local

相关内容