NixOS tutorial


NixOS è una distribuzione Linux 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.

Infatti i punti di forza di NixOS sono:

  1. Utilizzo di una configurazione dichiarativa:
    NixOS 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.
    In NixOS la configurazione è affidata ad un file (configuration.nix) in cui si dichiara infatti come deve essere configurato il sistema, quali pacchetti installare, quali servizi devono essere attivi.
    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 o si configura un servizio, NixOS 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.

  2. 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 NixOS, il sistema operativo 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.

  3. 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 NixOS.

Non fatevi spaventare dalla apparente complessità di NixOS, utilizzando i tutorial di questa guida vedrete che sarà semplice usarlo e vi accorgerete che è un sistema operativo reattivo ed estremamente stabile. E' un sistema operativo che vale la pena imparare ad usare.

Qui potete scaricare NixOS: nixos.org

Io ho scelto di installare la versione di NixOS con il desktop KDE Plasma e i tutorial li ho fatti con quella versione.


Installiamo NixOS


Per prima cosa dobbiamo scaricare la iso di NixOS, masterizzarla su DVD o penna USB e avviarne l'installazione.

Qui di seguito ci sono i collegamenti ai tutorial che devono essere eseguiti in ordine cronologico, uno alla volta passo per passo per poter installare NixOS e configurarlo:


Creiamo la nostra distribuzione di NixOS


Una volta installata la nostra distribuzione non sarà ancora completa, in quanto gli mancheranno ancora diversi programmi che noi vorremo utilizzare.

I programmi su NixOS si installano solo attraverso il terminale di linux.

Ci sono tre modi per installare i pacchetti attraverso il terminale:

  1. Utilizzando Nix Packages Manager
  2. Utilizzando il file di configurazione di Nix
  3. Scaricare e avviare un programma senza installarlo con Nix Shell

I nome dei pacchetti da installare e i comandi da digitare nel terminale, o da inserire nel file di configurazione di Nix, li trovate facilmente al seguente indirizzo web:

NixPKGS Search

Ora vediamo i tutorial su come installare e rimuovere le applicazioni in NixOS:

Qui vediamo un tutorial su come installare i programmi principali in NixOS:


Installiamo i programmi con Flathub


Una alternativa per installare i programmi in NixOS è l'uso dei pacchetti Flatpak al posto dei pacchetti di Nix. I pacchetti Flatpak contengono al loro interno tutto ciò che il programma ha bisogno per essere eseguito correttamente come ad esempio file audio, librerie, file binari e così via. Allo stesso modo dei pacchetti di Nix girano sul sistema in uno stato di isolamento.

I pacchetti Flatpak possono essere installati facilmente dal sito web Flathub.org

Vedere le seguenti guide:


Tutorial su NixOS


In questa pagina metto a disposizione dei tutorial per imparare a fare le operazioni più semplici con NixOS.

Questi tutorial sono pensati anche per gli utenti che non hanno nessuna esperienza di linux e del computer. Quindi proprio per questo riportano le immagini delle finestre passo passo per ogni azione da compiere in maniera che anche i neo-fili siano in grado di utilizzarli.

Ora vediamo una serie di tutorial per imparare a fare operazioni base estremamente elementari con NixOS:


Manutenzione di NixOS


Ora vediamo una serie di tutorial per imparare a fare manutenzione a NixOS:


Configurazioni in NixOS


Ora vediamo una serie di tutorial per imparare a fare delle operazioni più specifiche in NixOS: