如何将二进制文件安装到 NixOS

How can I install binary file into NixOS

我正在尝试使用声明方式在 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 中添加什么才能使这个二进制文件安装在系统中?

这似乎是一个开源的 Go 应用程序,因此最好使用 Nixpkgs 的 Go 支持,这可能比修补二进制文件更直接。

也就是说,installPhase 负责创建 $out 路径;通常 mkdir -p $out/bin 后跟 cpmake install 或类似命令。

所以这实际上并没有将它安装到系统中;毕竟 Nix 推导不应该有副作用。将其“安装”到系统中是 NixOS 派生的责任,由您配置。

可以说'installation'是修改NixOS配置+切换到新NixOS的组合。我倾向于只考虑对配置的修改;构建和切换感觉像是实现细节,尽管 nixos-rebuild 通常是手动操作。