如何将二进制文件安装到 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
后跟 cp
、make install
或类似命令。
所以这实际上并没有将它安装到系统中;毕竟 Nix 推导不应该有副作用。将其“安装”到系统中是 NixOS 派生的责任,由您配置。
可以说'installation'是修改NixOS配置+切换到新NixOS的组合。我倾向于只考虑对配置的修改;构建和切换感觉像是实现细节,尽管 nixos-rebuild
通常是手动操作。
我正在尝试使用声明方式在 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
后跟 cp
、make install
或类似命令。
所以这实际上并没有将它安装到系统中;毕竟 Nix 推导不应该有副作用。将其“安装”到系统中是 NixOS 派生的责任,由您配置。
可以说'installation'是修改NixOS配置+切换到新NixOS的组合。我倾向于只考虑对配置的修改;构建和切换感觉像是实现细节,尽管 nixos-rebuild
通常是手动操作。