NixOS Γ¨ il mio sistema operativo principale dal 2024 e ho deciso di scrivere questa nota sul mio Giardino Digitale per divulgare tutto ciΓ² che ho imparato nel corso di questi anni sul ✨magico mondo✨ diΒ NixOSΒ e permettere a chiunque ne possa essere interessato di superare facilmente tutti gli ostacoli che ho dovuto affrontare anche io nell’usarlo.

Senza girarci troppo intorno, diciamoci le cose così come stanno. Si sa che ogni utente di Linux cerca di vendere la propria distribuzione Linux in uso come se fosse la panacea per tutti i mali di questo mondo, cercando di convincere chiunque lo ascolti di avere il cazzo più marmoreo fra tutti perché la propria distribuzione Linux è quella perfetta.

Proprio per queste ragioni, con questa nota non voglio assolutamente insinuare che NixOS sia la distribuzione perfetta, ma semplicemente offrire il mio punto di vista da utente di NixOS sulle sue peculiaritΓ  e i motivi che mi hanno spinto a sceglierla e che tutt’ora mi fanno desistere dal passare stabilmente ad altre distribuzioni.

Introduzione a NixOS

Ma quindi, cos’è NixOS e perchΓ© dovrei usarlo?

Innanzitutto, partiamo col dire che NixOS Γ¨ una distribuzione Linux basata sul package manager Nix. Inizialmente Nix era disponibile per sistemi UNIX-like, ma c’erano molti dubbi sul fatto che si potesse creare a tutti gli effetti un sistema operativo basato su di esso.

Tuttavia, Eelco Dolstra (il creatore di Nix) precisò già a suo tempo che i moderni metodi di gestione delle configurazioni dei sistemi operativi, esattamente come per la distribuzione del software, erano parecchio caotici: i file di configurazione, così come i pacchetti, erano sparsi per tutto il file system

Definizione: NixOS

NixOS è una distribuzione Linux basata sul package manager Nix. È un sistema operativo dichiarativo, ossia la configurazione del sistema è dichiarata in file scritti in linguaggio Nix e gode delle proprietà di riproducibilità e di indistruttibilità.

Attenzione: usa NixOS se hai familiaritΓ  con Linux

Essendo NixOS una distribuzione Linux (anche abbastanza peculiare, data la sua caratteristica di essere dichiarativa), questa nota Γ¨ rivolta a chi ha giΓ  un minimo di esperienza con altre distribuzioni piΓΉ β€œpopolari”, come Ubuntu o Debian. Nel caso tu fossi completamente novizio nel mondo di Linux, ti consiglio di prendere un po’ di dimestichezza con altre distribuzioni prima di tentare di usarlo, in modo da poter padroneggiare piΓΉ facilmente i concetti espressi in questa nota.

Concetti chiave di NixOS

Ogni volta che in NixOS vogliamo apportare una modifica alla configurazione del sistema operativo, come l’installazione di un nuovo pacchetto, non si interviene direttamente sul sistema in esecuzione, ma si aggiorna la configurazione dichiarativa e si avvia un rebuild del sistema.

Definizione: rebuild

In NixOS, il rebuild Γ¨ il processo con cui il sistema operativo viene ricostruito a partire dalla configurazione dichiarata, lasciando inalterate le versioni precedenti.

Ogni rebuild produce una nuova generazione.

Definizione: generazione

InΒ NixOS, unaΒ generazioneΒ Γ¨ una versione del sistema operativo risultante da una sua specifica configurazione, ottenuta da un rebuild.

Ogni generazione viene salvata in memoria e ciΓ² permette all’utente, durante la fase di avvio del sistema, di accedere a qualsiasi configurazione salvata precedentemente

Potremmo dire che, con un rebuild, possiamo ottenere un’istantanea (la generazione) della nostra configurazione.

Osservazione: il salvataggio delle varie generazioni assicura l'indistruttibilitΓ 

Se si effettua unΒ rebuildΒ che in qualche modo β€œrompe” il sistema operativo e ne impedisce perfino l’avvio, basta tornare all’ultimaΒ generazioneΒ ancora funzionante salvata in memoria e ripartire da lΓ¬ risolvendo gli errori, assicurando cosΓ¬ l’indistruttibilitΓ  del sistema.

Diversamente, con altri sistemi operativi, se ne viene compromesso perfino l’avvio bisogna necessariamente trovare l’origine del problema e provare a ripararlo, altrimenti l’alternativa Γ¨ reinstallare il sistema operativo da zero e ripartire da capo con la sua configurazione.

Consiglio: usa un controllo di versione con NixOS

Dato che ogniΒ generazioneΒ salva con sΓ© anche i file che l’hanno generata, ti consiglio di impostare appena possibile (preferibilmente subito dopo l’installazione di NixOS) un controllo di versione sui file di configurazione, in modo da poter sempre facilmente recuperare leΒ generazioniΒ precedenti.


Fonti