web-dev-qa-db-ja.com

NixOS / nixpkgsのローカルリポジトリを作成するにはどうすればよいですか?

Nixパッケージのローカルリポジトリを作成するために私が見つけたすべての指示には、メインnixpkgsリポジトリのローカルクローンを作成し、それに追加することが含まれます。

ローカルアドオンパッケージだけを含む小さなリポジトリを作成する方法はありますか?

17

はい、単一のパッケージの式を作成します。 pkgs = import <nixpkgs> {};を使用すると、nixpkgsから依存関係を取得できます。

6

このブログ投稿にはいくつかの詳細があります: 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<nixpkgs>をインポートして、デフォルトの「リポジトリ」から依存関係を追加します。

nix-env -f mypkgs.nix -i DERIVATION_NAMEを実行してパッケージをインストールする

しかし、nixは本格的な言語に基づいているので、それを実行する方法は無限にあります。

5
olejorgenb

私は決してNixの専門家ではないので、これが最善の方法であるかどうかはわかりませんが、それが私のやり方です。 $HOME/nix-localにパッケージのローカルリポジトリがあります。これには、多数のパッケージファイルvault/default.nixblackbox/default.nixなどと、packageOverridesを定義するconfig.nixファイルが含まれています。彼らへ電話します。だから次のようなもの:

$ 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 で確認できます

1
telent