Guida ai pacchetti Nix



Nix è il package manager sviluppato dagli sviluppatori di NixOS, anche se forse sarebbe meglio dire che NixOS è una distribuzione basata su Nix.

Comunque sia, Nix è un package manager che oltre a garantire l’isolamento dei pacchetti, ha un repository con più di 120,000 pacchetti e ha anche un sistema di versionamento e rollback dei pacchetti che ci permette di installare versioni precedenti di pacchetti per esempio quando un aggiornamento rompe qualcosa.

La particolarità di Nix però sta nel fatto che ha differenza dei package manager classici, Nix non installa pacchetti ma ambienti. Viene infatti utilizzato un sistema di derivazione che permette di creare ambienti riproducibili con le dipendenze necessarie per eseguire un programma attraverso istruzioni scritte in Nix Language, un linguaggio funzionale scritto apposta per Nix.

Questa caratteristica ci permette di installare gli stessi pacchetti su qualsiasi macchina con Nix installato, senza dover installare le dipendenze del pacchetto. Ed essendo Nix compatibile con tutti i sistemi operatici di linux possiamo avere lo stesso pacchetto anche su altri sistemi operativi.

Potete usare Nix Pachages usando la distribuzione di Linux NixOS , una distribuzione costruita sopra il gestore di pacchetti Nix che, a differenza dei tradizionali gestori di pacchetti, offre un approccio cosiddetto funzionale e dichiarativo. Nix permette infatti di creare ambienti isolati e indipendenti (installa i programmi in directory il cui nome viene generato univocamente tramite un hash crittografico) dove tutti i pacchetti e le rispettive dipendenze sono gestiti in modo sicuro e riproducibile. È anche possibile installare diverse versioni di un pacchetto senza che entrino in conflitto tra loro o con il sistema host.

Una delle caratteristiche principali di Nix e NixOS è la possibilità di effettuare rollback degli aggiornamenti. Questo significa che è possibile tornare a una versione precedente del sistema in caso di problemi o incompatibilità con le nuove versioni. Inoltre, grazie alla gestione dichiarativa dei pacchetti, è possibile condividere facilmente le configurazioni del sistema con altri utenti, rendendo semplice la collaborazione e la riproducibilità dell'ambiente.

Qui potete scaricare NixOS: nixos.org

Oppure potete utilizzare Nix Pachages sulla vostra distribuzione preferita installando Nix.

Il tutto avviene autonomamente e può funzionare indipendentemente dal sistema. In questo modo è possibile installare un pacchetto di Nix su qualunque distribuzione Linux e renderlo praticamente universale.


I vantaggi di Nix


L’utilizzo di Nix offre diversi vantaggi, tra cui:

  • Compatibilità: Le applicazioni di Nix possono essere eseguite su qualsiasi distribuzione Linux che supporti Nix, semplificando la distribuzione e l’installazione di software.

  • Utilizzo di una configurazione dichiarativa:
    Nix ha una gestione dichiarativa dei pacchetti e della configurazione del sistema. Con la gestione dichiarativa l'utente dichiara in modo esplicito cosa desidera nel sistema, piuttosto che apportare modifiche dirette.
    Questo innovativo approccio garantisce che installazione e gestione delle applicazioni siano prevedibili e riproducibili. Per riproducibilità si intende che gli sviluppatori possono condividere facilmente il solo file di configurazione, il che basta a garantire che tutti lavorino con lo stesso ambiente.
    Quando si installa un pacchetto Nix crea un ambiente isolato per quel pacchetto. Ogni pacchetto ha le sue copie delle librerie e delle dipendenze specifiche necessarie per eseguire quell'applicazione. Questo elimina la necessità di condividere le librerie di sistema globali tra le applicazioni. Inoltre riduce significativamente i conflitti tra applicazioni che potrebbero richiedere versioni diverse di librerie o dipendenze.
    Infatti Nix memorizza tutti i pacchetti in isolamento l'uno dall'altro in /nix/store. Questo è un aspetto interessante che non si trova in altre distribuzioni Linux. Ogni pacchetto risiede nella propria sottodirectory /store. Ogni pacchetto ha un identificatore univoco che cattura tutte le sue dipendenze archiviate in un hash crittografico.

  • Utilizzo di Aggiornamenti atomici:
    In termini semplici, un aggiornamento atomico è un'operazione che viene eseguita completamente o non viene eseguita affatto. Quando si applica un aggiornamento atomico in Nix, il sistema viene ricostruito per intero, tramite una nuova immagine che ricomprende le modifiche apportate. Questa immagine viene quindi resa attiva e sostituisce la precedente. Se l'aggiornamento fallisce per qualsiasi motivo, il sistema può facilmente tornare allo stato precedente, mantenendo integrità e operatività senza complicazioni.
    I principali vantaggi degli aggiornamenti atomici sono quindi:

    • Consistenza: Gli aggiornamenti atomici garantiscono che il sistema sia sempre in uno stato coerente e funzionante.
    • Rollback Sicuro: In caso di problemi durante l'aggiornamento, il sistema può essere facilmente ripristinato alla versione precedente senza complicazioni né impatti negativi.
    • Riproducibilità: Ogni aggiornamento atomico è un evento isolato e ciò garantisce che l'ambiente rimanga coerente e prevedibile in qualunque computer venga eseguito.

  • Profili e ambienti per l'utente:
    Profili e Ambienti per l'utente sono il meccanismo di Nix per implementare la capacità di consentire a diversi utenti di avere configurazioni diverse e di eseguire aggiornamenti e rollback atomici. Ci possono essere molti ambienti utente: diversi utenti possono avere ambienti diversi e i singoli utenti possono passare da ambienti all'altro. In Nix - e quindi, In NixOS un ambiente utente è un concetto fondamentale per capire come funziona il sistema.
    In Nix, diversi utenti possono avere diverse "visualità" sul set di applicazioni installate. Cioè, potrebbero esserci molte applicazioni presenti sul sistema (possibilmente in molte versioni diverse), ma ogni utente può avere una selezione specifica di quelle attive per lui. Tale visualizzazione sul set di applicazioni installate è chiamata ambiente utente. Ogni applicazione può essere installata per il singolo utente, oppure l'utente root può installarla per tutti gli utenti.
    Questo comporta un livello di personalizzazione senza pari per gli utenti che utilizzano Nix.

Non fatevi spaventare dalla apparente complessità di Nix, utilizzando i tutorial di questa guida vedrete che sarà semplice usarlo e vi accorgerete che vale la pena di imparare ad usarlo.


Installazione di Nix su Linux


Nix può essere installato sulla maggior parte delle distribuzioni di Linux. Su Debian e derivate e su Ubuntu e derivate l'installazione non presenta nessun problema. Su alcune distribuzioni di linux si possono avere dei problemi di installazione o di aggiornamento per delle limitazioni di queste distribuzioni nei permessi di scrittura da sorgenti di software esterni. In quel caso non potremo installare ed utilizzare Nix.

Vediamo come installare Nix e configurarlo alla seguente pagina:


Gestione dei pacchetti Nix


Nix Packages è un archivio centralizzato di applicazioni nel formato Nix. Puoi usarlo per installare le applicazioni sul tuo sistema.

Vediamo ora nel seguente tutorial come installare un programma con Nix Packages:

Per quanto riguarda come installare e gestire i pacchetti Nix vedere la seguente guida:

Qui invece trovate divisi per categoria tutte le applicazioni principali che potete installare sulle distribuzioni Linux in formato Nix sulla vostra distribuzione di Linux: