NixOS è una distribuzione Linux basata sul package manager Nix. È la distribuzione Linux che attualmente uso dal 2024 e ho deciso di scrivere questa guida 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 entrare a farne parte facilmente.
Attenzione
Essendo NixOS una distribuzione Linux, questa guida è 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 prima un po’ di dimestichezza con altre distribuzioni e tornare qui tra un po’. Au revoir.
1 - Cos’è NixOS e perché dovrei usarlo?
Insomma, inutile girarci intorno, diciamoci le cose così come stanno. È risaputo come ogni utente di Linux cerchi di rappresentare agli occhi degli altri 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 guida 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 in partenza dal provare altre distribuzioni.
NixOS è una distribuzione Linux basata sul package manager Nix che ruota intorno a 3 concetti fondamentali:
- Dichiaratività: NixOS usa un approccio dichiarativo (anziché quello imperativo) per la configurazione del sistema, salvando tutto in file scritti in linguaggio Nix.
- Riproducibilità: ogni configurazione di NixOS si può facilmente riprodurre su altri computer senza doverla replicare “manualmente”, ma semplicemente clonando i file di configurazione.
- Indistruttibilità: in NixOS è praticamente impossibile ritrovarsi nella condizione di avere un sistema operativo non funzionante perché è sempre possibile recuperare configurazioni “sicure” precedenti.
1.1 - Dichiaratività
La maggioranza dei sistemi operativi è basato su un approccio di tipo imperativo: per apportare modifiche alla propria configurazione (che comprende le impostazioni di base del sistema operativo stesso, le applicazioni installate o i pacchetti nel caso delle distribuzioni Linux, le impostazioni delle applicazioni, ecc.), si eseguono istruzioni (spesso nella riga di comando) che, una dopo l’altra, ne alterano lo stato.
NixOS, invece, usa un approccio di tipo dichiarativo (simile a quello dei dotfile in Linux): la configurazione del sistema operativo è tutta contenuta (dichiarata) in uno o più file di configurazione scritti in linguaggio Nix e, a ogni avvio, il sistema viene letteralmente costruito esattamente come dichiarato nei file. Ciò permette di tenere traccia facilmente di tutto ciò che contribuisce alla configurazione del sistema, proprio perché è tutto scritto in dei semplici file modificabili.
1.2 - Riproducibilità
Proprio grazie alla dichiaratività, essendo tutta la configurazione del sistema salvata in file, basta semplicemente copiare questi file su altri computer su cui è installato NixOS per riprodurre perfettamente la stessa identica configurazione del sistema; ovviamente, tutto ciò che non è parte della configurazione del sistema, quindi tutti quei dati come documenti, salvataggi di giochi, ecc., non saranno trasferiti (per fare ciò, esiste restic
).
La caratteristica della riproducibilità può tornare molto utile nel caso in cui ci sia bisogno di configurare multipli computer nello stesso modo, per esempio in un ufficio o in un laboratorio universitario in cui tutti i computer devono essere configurati allo stesso modo con gli stessi programmi installati. Grazie a NixOS, per effettuare delle nuove modifiche al sistema (come l’installazione di un nuovo programma) basta lavorare su un solo computer e, in automatico, propagarle a tutte le altre macchine, senza dover mettere mani su ognuna di esse.
Inoltre, grazie a ciò, ognuno può facilmente condividere la propria configurazione a chiunque possa essere interessato nella community di NixOS: la mia si può trovare sul mio profilo GitHub.
1.3 - Indistruttibilità
Ogni aggiornamento della propria configurazione di NixOS (anche detto rebuild) viene salvato in memoria e ciò permette all’utente, durante la fase di avvio del sistema, di accedere a qualsiasi configurazione salvata precedentemente (ognuna delle quali viene detta generazione).
In questo modo, 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. Con altri sistemi operativi invece, 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.
Consiglio
Dato che ogni generazione salva con sé anche i file che l’hanno generata, ti consiglio di impostare (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.
1.4 - Dual boot con Windows
Ogni distribuzione Linux, per quanto possa essere anche abbastanza conosciuta e utilizzata (come Ubuntu o Debian), ha un difetto: non può competere con la popolarità di Windows. In un mondo ideale, non dovrebbe sussistere alcun problema riguardo ciò, ma per nostra grande fortuna viviamo in un mondo che non è affatto quello ideale e il problema è dovuto alla disponibilità dei software per Linux e, nello specifico, per NixOS.
Molti programmatori, ma in particolare molte grandi aziende produttrici di software, sono poco inclini al rendere disponibili i propri software per i sistemi operativi Linux, favorendo così l’egemonia di Windows e rendendo vano ogni tentativo di potersene liberare.
Quindi, morale della favola: sì, ti consiglio vivamente di usare NixOS nella tua vita quotidiana (e, anche lavorativa per quanto possibile), ma in dual boot con Windows, cosicché quest’ultimo sia sempre a portata di mano e utilizzabile nel caso in cui ci dovesse essere il bisogno di utilizzare un software non disponibile per Linux (o per NixOS).
Un’altra alternativa possibile è quella delle virtual machine, ma mi sento di sconsigliarla in quanto è molto meno performante eseguire Windows in una VM rispetto che proprio come sistema operativo a se stante.
2 - Installazione in dual boot di Windows e NixOS
In questa guida, quindi, spiegherò come installare in dual boot Windows (10 o 11, fa lo stesso) e NixOS.
Andremo prima a installare Windows e, solo successivamente, NixOS: è più facile installare NixOS dopo Windows (e in generale, è più semplice installare Linux dopo Windows), anziché viceversa.
2.1 - Preparazione
Innanzitutto, andando a cambiare il sistema operativo, sarà necessario ovviamente fare una formattazione del disco fisso, quindi prima di procedere ti consiglio vivamente di salvarti TUTTO ciò che non vuoi perdere su spazi di archiviazione esterni come chiavette, HDD esterni o anche sul cloud con Google Drive o Dropbox.
Se hai un po’ di pazienza e preferite fare le cose in sicurezza per evitare di avere in futuro rimpianti su dati che avrai permanentemente perso, ti consiglio di continuare a usare il tuo computer per almeno una settimana, esattamente come hai fatto finora e, nel frattempo, salvarti tutto quello di cui ti ricordi (io consiglio una settimana di “attesa” perché credo che in una settimana ci si riesca a ricordare di tutto ciò che può essere utile salvarsi, ma ovviamente più si “temporeggia” e meglio è). Questo è il mio consiglio, sentiti libero di non seguirlo a tuo rischio e pericolo (ma ricordati, meglio “perdere” una settimana di tempo che perdere qualcosa che potenzialmente non potresti recuperare mai più).
Bene, una volta terminato il trasferimento di tutti i dati utili, si può procedere con l’installazione vera e propria. L’occorrente per questo processo è il seguente:
- Una chiavetta USB da almeno che sarà formattata (per diventare un’unità USB avviabile) e, di conseguenza, perderà ogni dato salvato su di essa (anche in questo caso bisogna trasferire da qualche altra parte tutto il contenuto della chiavetta, altrimenti si rischia di perderlo per sempre).
- Una connessione a Internet che ci sarà utile durante l’installazione di NixOS e che può essere effettuata in uno dei seguenti modi:
- Tramite Ethernet, cioè tramite cavo LAN collegato al computer.
- Tramite tethering, cioè collegando il telefono al computer tramite un cavo USB e attivando l’impostazione del tethering sul telefono stesso.
- Tramite Wi-Fi, ma rispetto ai primi due metodi (che richiedono solamente l’azione di collegare il computer al cavo LAN o al cavo USB) è un metodo un po’ più macchinoso perché necessita di un po’ di configurazione (per fortuna, però, sulla guida ufficiale è spiegato tutto).
- Ovviamente, un dispositivo da cui seguire queste istruzioni diverso da quello su cui si installerà il sistema operativo (va bene anche il telefono stesso da cui si fa tethering oppure un altro computer).
- Almeno di memoria non allocata sul disco fisso da destinare a NixOS.
2.2 - Installazione e configurazione di Windows
Come già detto, per comodità, ci conviene in primis avere già installato Windows (10 o 11) e solo in seguito sarà possibile procedere con l’installazione di NixOS.
2.2.1 - Windows già installato
Se hai già installato Windows, ci sono due operazioni da effettuare per prepararci all’installazione di NixOS:
- Creare una partizione per contenere NixOS, riducendo le altre partizioni già esistenti.
- Verificare che la partizione di avvio di Windows sia almeno pari a . Ciò è necessario perché il bootloader di NixOS, systemd-boot, condivide la stessa partizione di avvio di Windows e la utilizza per memorizzarci dentro anche i kernel Linux, rendendo così i impostati di default dallo schema di partizionamento ovviamente insufficienti.
Per effettuare queste operazioni, procedi in questo modo (ho testato questa procedura solo su Windows 10, ma su Windows 11 dovrebbe essere pressoché la stessa):
- Dal menu di Start, cerca
Gestione disco
e avvialo. - Dovresti vedere il
Disco 0
con almeno 3 partizioni:- La partizione di sistema EFI, ossia quella che ci interessa per l’avvio di Windows, solitamente denotata con
(Disco 0 Partizione 1)
. - La partizione NTFS contenente Windows, solitamente denotata con
(C:)
o qualche altra lettera. - La partizione di ripristino, solitamente denotata con
(Disco 0 Partizione 4)
. - Eventuali altre partizioni, come nel mio caso la partizione
(D:)
per i dati.
- La partizione di sistema EFI, ossia quella che ci interessa per l’avvio di Windows, solitamente denotata con
- In base allo spazio disponibile e alle partizioni che ci sono già, riduci lo spazio di una delle partizioni (o, se hai partizioni inutilizzate, eliminale) per fare spazio a NixOS. Nel mio caso, ho liberato circa su totale per NixOS.
- Verifica che la partizione di sistema EFI
(Disco 0 Partizione 1)
abbia una capacità di almeno . Se non è così, espandila, verificando che ci sia dello spazio disponibile sulla destra della partizione di sistema EFI. Nel mio caso, tra la partizione di sistema EFI e il disco(C:)
non c’è spazio disponibile:A questo punto, normalmente, sarei altamente fottuto perché sarei costretto a eliminare la partizione
(C:)
e perdere tutti i dati contenuti in essa, dato che laGestione disco
non permette di spostare le partizioni. Fortunatamente, però, per ogni magagna che la Microsoft combina c’è sempre qualche buon uomo che si è preoccupato di risolverla per noi e, nel nostro caso, la manna dal cielo è MiniTool Partition Wizard. Installiamo l’edizione gratuita e avviamo il programma. Questo è ciò che mi ritrovo davanti:Scopro, cioè, che tra la partizione di sistema EFI
(Disco 0 Partizione 1)
e la partizione(C:)
c’è un’altra partizione da che è la Microsoft Reserved Partition (MSR), una partizione speciale usata da Windows per scopi di compatibilità che ha la caratteristica di essere completamente irremovibile e inalterabile, pena il corretto funzionamento di Windows. Data quindi la presenza di questa meravigliosa partizione, posso dire di essere arrivato al capolinea perché non ho modo di espandere la partizione di sistema EFI senza rischiare di corrompere il sistema, ergo sono costretto a reinstallare Windows da capo (vedere il punto successivo). Se tu invece sei stato più fortunato e non hai trovato questa partizione, allora dall’interfaccia di MiniTool Partition Wizard puoi espandere le partizioni a tuo piacimento. - Una volta che hai modificato tutte le partizioni correttamente, puoi passare all’installazione di NixOS.
Windows da installare
Se non hai ancora installato Windows, innanzitutto controlla se il tuo computer rispetta i requisiti di sistema per l’installazione di Windows 11, altrimenti in alternativa puoi procedere con l’installazione di Windows 10 senza problemi.
Scarica l’immagine ISO della versione di Windows che desideri da questi link:
Per l’installazione di Windows (e anche quella di NixOS successivamente) useremo Ventoy, un tool open source che permette di creare unità USB avviabili senza rendere la chiavetta USB un dispositivo read-only e permettendoci di continuare a usarla come una chiavetta normale. Dato che non avviene nessun burning delle immagini ISO, grazie a Ventoy possiamo caricare multiple immagini sulla stessa chiavetta.
Per installare Windows tramite Ventoy, procedi in questo modo:
- Scarica e installa Ventoy.
- Seleziona la chiavetta USB su cui vuoi installare il firmware di Ventoy per renderla un’unità USB avviabile.
Attenzione
Per rendere la tua chiavetta USB un’unità USB avviabile tramite Ventoy, ci sarà bisogno di formattarla. Prima di procedere, quindi, conserva da qualche altra parte qualsiasi dato che potrebbe servirti salvato sulla chiavetta.
-
Ora la chiavetta dovrebbe essere stata rinominata in
Ventoy
, quindi copiaci dentro l’ISO di Windows che hai scaricato e fai una rimozione sicura della chiavetta. -
Inseriscila nel computer su cui installare Windows, accendi il computer e schiaccia uno dei pulsanti come
F12
oCanc
per accedere al menu di avvio del sistema operativo (boot menu). -
Seleziona la chiavetta con Ventoy sopra per l’avvio.
-
Se ti esce il seguente errore, non devi preoccuparti: c’è solo bisogno di impostare l’avvio sicuro del sistema operativo (ci sarà bisogno di eseguire questo procedimento solo per la prima volta che si prova ad avviare con Ventoy).
Ecco ciò che devi fare (questa soluzione si trova proprio nella documentazione ufficiale di Ventoy):
- Premi
Invio
per selezionareOK
. - Premi qualsiasi tasto per continuare nella gestione della MOK (Machine Owner Key).
- Seleziona
Enroll key from disk
. - Seleziona
VTOYEFI
. - Seleziona
ENROLL_THIS_KEY_IN_MOKMANAGER.cer
. - Seleziona
Continue
. - Seleziona
Yes
. - Seleziona
Reboot
.
- Premi
-
Se, invece, ti esce una schermata blu ma con altri errori (es.
Linpus lite xxxx
), allora disabilita l’avvio sicuro nel BIOS. -
Risolti gli errori, ripeti i passi 4 e 5 per avviare la chiavetta con Ventoy.
-
Nell’interfaccia di Ventoy, seleziona l’ISO di Windows.
-
Seleziona
Boot in normal mode
. -
A questo punto dovrebbe avviarsi la schermata di installazione di Windows vera e propria. Se ciò non è successo (come nel mio caso):
- Ri-seleziona l’ISO di Windows.
- Stavolta, seleziona
Boot in wimboot mode
(da usare solo quando ci sono problemi con la modalità normale, come nel nostro caso). - Aspetta che si avvii la schermata di installazione di Windows.
-
Procedi con l’installazione di Windows.
-
Alla schermata di scelta del tipo di installazione, seleziona
Custom: Install Windows only (advanced)
. -
Cancella tutte le partizioni, compresa l’eventuale partizione MSR da se presente. Non preoccuparti, Windows si occuperà di ricreare tutte le partizioni necessarie durante l’installazione.
-
Con l’intero spazio del disco fisso non-allocato, premi il pulsante
☀️ New
e crea due nuove partizioni:- Una partizione da almeno di capacità.
Installazione di NixOS
Terminati i preparativi, puoi finalmente procedere con il download dell’immagine ISO di NixOS che preferisci e seguire la guida sull’installazione sul manuale ufficiale. Per l’installazione di NixOS, si può consultare il manuale ufficiale di NixOS che comprende anche una guida sull’installazione.
L’installazione può essere effettuata in 2 modi:
- Tramite l’installazione grafica (graphical ISO image), cioè tramite un’interfaccia grafica user-friendly che offre anche un Desktop Environment già incluso (si può scegliere quale usare tra GNOME e Plasma Desktop).
- Tramite l’installazione manuale (minimal ISO image), cioè tramite riga di comando.
Entrambe le immagini ISO si possono trovare nella sezione Download del sito di NixOS.
Consiglio vivamente di procedere con l’installazione manuale anziché con quella grafica perché, pur seguendo la guida sull’installazione, la versione della graphical ISO image che ho provato ad usare non mi salvava correttamente in memoria le vecchie generazioni, mentre con quella minimal non ho avuto problemi. Oltretutto, l’installazione manuale permette di avere piena padronanza e conoscenza delle modifiche che verranno apportate al proprio sistema, evitando così di ritrovarsi nel sistema alcune cose che potrebbero essere indesiderate.