バイナリファイルをNixOSにインストールするにはどうすればよいですか

Aug 24 2020

宣言的な方法を使用して、NixOS内に外部バイナリをインストールしようとしています。nix-pkgマニュアルの中で、NixOS内で外部バイナリを取得するそのような方法を見つけました

{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
  name = "goss";
  src = pkgs.fetchurl {
    url = "https://github.com/aelsabbahy/goss/releases/download/v0.3.13/goss-linux-amd64";
    sha256 = "1q0kfdbifffszikcl0warzmqvsbx4bg19l9a3vv6yww2jvzj4dgb";
  };
  phases = ["installPhase"];             
  installPhase = ''
  
  '';

しかしInstallPhase、このバイナリをシステム内にインストールするには、内部に何を追加すればよいのでしょうか。

回答

2 RobertHensing Aug 25 2020 at 00:16

これはオープンソースのGoアプリケーションのようです。そのため、代わりにNixpkgsのGoサポートを使用することをお勧めします。これは、バイナリにパッチを適用するよりも簡単な場合があります。

そうは言っても、パスinstallPhaseを作成する責任があり$outます。通常、または同様のコマンドがmkdir -p $out/bin続きます。cpmake install

つまり、実際にシステムにインストールするわけではありません。結局のところ、Nixの派生は副作用を持っているとは考えられていません。それをシステムに「インストール」するのは、ユーザーが構成したNixOSの派生物の責任です。

「インストール」とは、NixOS構成の変更と新しいNixOSへの切り替えの組み合わせであると言えます。私は構成の変更のみを考える傾向があります。nixos-rebuild通常は手動操作ですが、ビルドとスイッチは実装の詳細のように感じます。