NixOS

Era la fine del 2005, quando dopo vari pellegrinaggi di distro in distro approdai ad Arch Linux.
Si trattava di una distribuzione relativamente giovane, sviluppata da un programmatore canadese di nome Judd Vinet, il cui primo rilascio ufficiale risale all’11 marzo 2002.
All’epoca si inspirava all’elegante semplicità di Slackware, Crux e dei BSD ed il suo motto era l’acronimo KISS: “Keep It Simple, Stupid”.

Aveva tutto quello che cercavo da una distribuzione Linux:
– AIF (Arch Installation Framework), installer testuale leggero ed intuitivo basato su menù ncurses come quelli di Debian, Slackware o FreeBSD
– pacman, un gestore di pacchetti che installa ed aggiorna software direttamente dalla rete (stile apt)
– boot rapidissimo stile Slackware-BSD
– rc.conf, un file di configurazione unico, come nei BSD con cui gestire tutto il sistema
– abs, l’equivalente dell’albero dei ports dei BSD con cui poter ricompilare e personalizzare il sistema

Verso la fine del 2007 Judd Vinet si ritira dal progetto che passa nelle mani del programmatore statunitense Aaron Griffin e pian piano, nel corso degli anni finisce per perdere tutte le sue caratteristiche originali:

Nel 2012 il passaggio a systemd deprecò l’utilizzo del file di configurazione rc.conf (rete, pacchetti, moduli del kernel).
Tale importante modifica rese inutilizzabile anche il vecchio installer, sarebbe stata necessaria una sua quasi completa riscrittura, cosa che ad oggi non è ancora avvenuta.

Infine, nel 2017, anche “abs” e tutto il sistema di sincronizzazione ed aggiornamento da sorgenti viene dismesso.

Per i nostalgici o per chi non ha idea di cosa stia parlando, questo è un esempio di rc.conf

Stufo e sdegnato per la deriva di questa ottima distribuzione ho cercato conforto altrove.
Il primo pensiero era ricaduto su Slackware, ma per quanto sia affezionato a questo dinosauro mi sono dovuto scontrare con la dura realtà dei fatti: conciliare il vetusto installer di Slack col mio desiderio di organizzare il sistema con partizioni gpt e subvolumi btrfs si è rivelata un’impresa sconcertante.

Scettico, ma spinto dalla curiosità e dalla noia dell’isolamento domestico da COVID-19 ho quindi deciso di dedicarmi allo studio di NixOS.
Si tratta di una distribuzione Linux completamente rivoluzionaria, basata sull’innovativo gestore di pacchetti Nix.

L’approccio di Nix è unico nel suo genere, permette di installare, aggiornare e rimuovere software senza che ci si debba preoccupare delle dipendenze. Il path d’installazione di ogni pacchetto corrisponde al suo hash così da permettere la contemporanea convivenza anche di più versioni dello stesso programma. Gli aggiornamenti sono “atomici”, non vengono scaricati interi pacchetti deb, rpm o tgz, ma solo i file necessari. È inoltre possibile tornare indietro alla configurazione precedente all’installazione di un dato software in maniera semplice ed automatica.

L’aspetto che più entusiasma di questa distribuzione è la possibilità di tornare a gestire in maniera centralizzata tutti gli aspetti attraverso un unico file di configurazione (/etc/nixos/configuration.nix). Diventa semplicissimo replicare un’installazione su più macchine, fare cache dei pacchetti, gestire installazioni su sistemi virtualizzati o creare un supporto d’installazione personalizzato.
Si ha la sensazione di trovarsi di fronte ad un vero e proprio sistema operativo più che ad un assembramento di software, lo scotto da pagare per sfruttare tale potenza è il dover familiarizzare col suo linguaggio. Su NixOS le cose NON si fanno come sugli altri sistemi Linux.

Howto