Come posso installare il file binario in NixOS

Aug 24 2020

Sto cercando di installare il binario esterno all'interno di NixOS, usando modi dichiarativi. All'interno del manuale nix-pkg, ho trovato un modo per ottenere binari esterni all'interno di 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 = ''
  
  '';

Ma mi chiedo, cosa dovrei aggiungere inside InstallPhase, per fare in modo che questo binario venga installato all'interno del sistema?

Risposte

2 RobertHensing Aug 25 2020 at 00:16

Questa sembra essere un'applicazione Go open source, quindi è preferibile utilizzare invece il supporto Go di Nixpkgs, che potrebbe essere più semplice rispetto all'applicazione di patch a un binario.

Detto questo, installPhaseè responsabile creare il $outpercorso; tipicamente mkdir -p $out/binseguito da cpo make installcomandi simili.

Quindi non si tratta effettivamente di installarlo nel sistema; dopotutto, le derivazioni Nix non dovrebbero avere effetti collaterali. "Installarlo" nel sistema è responsabilità delle derivazioni di NixOS, come configurato da te.

Si potrebbe dire che "installazione" è la combinazione di modifica della configurazione di NixOS + passaggio al nuovo NixOS. Tendo a pensare solo alla modifica della configurazione; la build e lo switch sembrano dettagli di implementazione, anche se nixos-rebuilddi solito è un'operazione manuale.