web-dev-qa-db-ja.com

NixOSに1回限りのパッケージをどのようにインストールしますか?

nixos-16.03チャネルに保持しているNixOSボックスがあります。マシンをほぼ安定した状態に保ちたいので、nixos-unstableチャネルへの切り替えを避けたいと思います。

ただし、そのチャネルで利用可能なものよりも新しいバージョンのパッケージをインストールする必要があります(この例ではnodejs-6_x)。マニュアルには ワンクリックインストール を説明するセクションがあります。ただし、 http://hydra.nixos.org にあるHydraサーバーは、で説明されている.nixpkgツールで使用されるnix-install-packageファイルを提供していないようです。そのセクション。

Wikiには、パッケージをカスタマイズするプロセスも記載されています(このページは Modifying Packages と呼ばれます)。これは、目的に使用できると思いますが、ツールと戦っているようですそれを使うというよりは.

これについてはIRCでも質問しました(私の無知な質問に辛抱強く答えてくれたM-Ralithに感謝します!)が、それを適用する方法がよくわかりませんでした。アドバイスは「nixpkgs構成のsrcとバージョンをオーバーライドする」。これは、.nixpkgs/configuration.nixにnix式を記述し、サブスクライブしたチャネル(nixos-16.03)のパッケージのプロパティをオーバーライドできるようです。パッケージについて質問したときチャネルに存在しない場合、アドバイスは「srcとversionをオーバーライドするだけでなく、パッケージ全体を指定する」というものでした。つまり、関心のあるパッケージのnix式全体を複製する必要があるということです。 。これは、安定したチャネルがオーバーライドに使用するバージョンに追いつくか追い越した場合に、nix-envがそのパッケージを更新しないようにする効果があると思われます。

インストールしたい別のチャネルに存在するが、現在のチャネルには残っているパッケージの場合、より良い方法はありますか? nix-build <url> | nix-env -iのようなことができるはずだとほとんど感じています。これをインストールするのが理想的ですが、現在のチャネルが追いついた場合に後でアップグレードできないような構成はありません。

9
Ben Collins

nix-envツールを使用できます

% nix-env -f https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -iA tig

またはnix-buildツールを使用します

% nix-build -I nixpkgs=https://github.com/NixOS/nixpkgs-channels/archive/nixos-unstable.tar.gz -A tig

それがどのように役立つか!

8
Rok Garbas