Definizione: NixOS
NixOS è una distribuzione Linux basata sul package manager Nix.
NixOS è la distribuzione Linux principale che 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 superare facilmente tutti gli ostacoli che ho dovuto affrontare anche io nell’usarlo.
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 che ogni utente di Linux cerca 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 testuali.
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ò, io uso 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.
Definizione: generazione
In NixOS, una generazione è una versione completa e coerente dello stato del sistema operativo risultante da una specifica configurazione.
Ogni volta che si ricostruisce il sistema operativo (ad esempio con
nixos-rebuild switch), NixOS crea una nuova generazione che include tutti i pacchetti, i servizi e le impostazioni attive in quel momento.
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: 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 (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 dobbiamo sorbirci l’annoso problema della 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.
Morale della favola: sì, ti consiglio vivamente di usare NixOS nella tua vita quotidiana, 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 a installare prima Windows e, dopo aver espanso la partizione di sistema EFI per fare spazio al firmware di NixOS, installeremo quest’ultimo.
Io installerò sia Windows che NixOS in inglese, quindi i programmi e/o i comandi che citerò saranno scritti in inglese (suvvia, non serve il C2 per capire qual è il loro corrispettivo in italiano).
[!tutorial] Tutorial: installazione in dual boot di Windows e NixOS
Questo è il tutorial per installare in dual boot Windows e NixOS.
Prima di partire con l’installazione vera e propria, ci sono un po’ di preparativi da fare.
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.
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.
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. Io in questa guida userò Windows 10 perché il mio PC non supporta Windows 11.
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
F12oCancper 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
Invioper 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 che è rimasto fisso su una schermata nera per 10 secondi e poi è tornato alla schermata di selezione delle ISO):
- 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. Non preoccuparti, Windows si occuperà di ricreare tutte le partizioni necessarie durante l’installazione.
- Procedi con l’installazione di Windows (possibilmente evitando di installare qualsiasi altra puttanata ti chieda di installare Windows).
- Terminata l’installazione di Windows, apri Disk management (Gestione disco in italiano). Dovresti trovarti in una situazione simile a questa:
Tralasciando le partizioni della chiavetta USB con Ventoy sopra (Ventoy (D:)eVTOYEFI (E:)), abbiamo tre partizioni:(C:): la partizione NTFS primaria contenente Windows.(Disk 0 partition 1): la partizione di sistema EFI contenente il firmware per avviare Windows.(Disk 0 partition 4): la partizione di ripristino di Windows 10.
- Fai clic col tasto destro sulla partizione
(C:)e seleziona Shrink Volume…. Inserisci il numero di che vorrai sottrarre a Windows per assegnarli a NixOS (io ne ho scelti ). Ci ritroveremo quindi in questa situazione:
Tralasciando il fatto che Windows si rifiuta di puntualizzare che quelli che ci sta mostrando sono e e non e , ora puoi notare come abbiamo (che sono equivalenti a ) di spazio non allocato. - Per il momento abbiamo finito con Windows, ora puoi passare all’installazione di NixOS!
Installazione di NixOS
Terminata l’installazione e configurazione di Windows, puoi finalmente procedere con il download dell’immagine ISO di NixOS. Sulla pagina di download del sito ufficiale di NixOS trovi 2 ISO:
- L’ISO che effettua l’installazione 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).
- L’ISO che effettua l’installazione tramite l’installazione manuale (minimal ISO image), cioè tramite riga di comando.
Consiglio: scegli l'installazione manuale di NixOS
Per l’installazione di NixOS io consiglio vivamente di procedere con l’installazione manuale anziché con quella grafica perché:
- Ai tempi, quando ebbi il mio primo approccio a questo favoloso sistema operativo, pur seguendo la guida ufficiale di NixOS sull’installazione, la graphical ISO image della versione
24.05di NixOS che provai a usare non mi salvava correttamente in memoria le vecchie generazioni, mentre con quella minimal non ho avuto problemi.- L’installazione manuale ti permette di avere piena padronanza e conoscenza delle modifiche che verranno apportate al tuo sistema, evitandoti così di ritrovarti alcune cose che potresti non desiderare. Insomma, se fai tutto tu sai esattamente quel che otterrai.
Fonti
- 🌐 Drake Rossman, How to dualboot Windows and NixOS.
- 📹 YouTube:
- Vimjoyer, NixOS beginner guide.