NixOS je nezavisna Linux distribucija zasnovana na jedinstvenom konceptu: celokupan sistem se konfiguriše i vodi preko deklarativnog koda.
Umesto da ručno izmenjuješ fajlove u /etc, instaliraš pakete preko tradicionalnih package manager-a (apt, pacman, dnf) i pamtiš šta si sve podesio, u NixOS-u sve definišeš unutar jednog glavnog fajla — /etc/nixos/configuration.nix.
Evo ključnih stubova na kojima počiva NixOS:
1. Deklarativna konfiguracija (Sistem kao kod)
U NixOS-u u konfigurasijskom fajlu pišeš šta želiš da tvoj sistem sadrži. Na primer, definišeš korisnike, mrežne postavke, koji grafički interfejs koristiš i listu svih aplikacija. Kada izmeniš fajl, pokreneš komandu:
Bash
sudo nixos-rebuild switch
NixOS tada analizira tvoj kod i dovodi sistem u tačno definisano stanje.
2. Imutabilnost i /nix/store
Tradicionalni Linux distribuira fajlove po standardnim folderima (/usr/bin, /lib, /etc). NixOS to radi potpuno drugačije:
- Svi paketi i verzije se čuvaju u
/nix/storeu posebnim read-only folderima čija imena sadrže jedinstveni hash (npr./nix/store/h3d8g...-python-3.11). - Nema konflikta zavisnosti (Dependency Hell): Dve različite aplikacije mogu bez problema koristiti potpuno različite verzije iste biblioteke.
- Zbog ovoga, korenski sistem je praktično imutabilan (nepromenljiv) i zaštićen od slučajnog kvarenja.
3. Atomske nadogradnje i Instant Rollback (Atomski skokovi i vraćanje unazad)
Svaki put kada primeniš novu konfiguraciju, NixOS kreira novu generaciju sistema.
- Ako ažuriranje pokvari neki drajver ili aplikaciju, ne moraš da popravljaš sistem.
- Tokom podizanja sistema (u boot loader-u) možeš jednostavno izabrati prethodnu generaciju u kojoj je sve radilo.
- Sistem možeš vratiti unazad i jednom komandom:Bash
sudo nixos-rebuild switch --rollback
4. Reproducibilnost (Isti sistem na više mašina)
Ako želiš da preslikaš svoj kompletno podešen operativni sistem (sa svim aplikacijama, podešavanjima za Vim, Git, mrežnim parametrima i fontovima) na potpuno novu mašinu ili laptop:
- Dovoljno je da kopiraš svoj
configuration.nix(ili Nix Flake) na novu mašinu i pokreneš build. - Dobićeš 100% identifikacija identičan sistem bez ručnog instaliranja i podešavanja.
Kome je NixOS namenjen (i koje su mu mane)?
Prednosti:
- Fantastičan za napredne korisnike, Developere, DevOps inženjere i SysAdmin-e.
- Nemoguće je “slomiti” sistem do mere da se ne može vratiti u radno stanje za par sekundi.
- Idealan za upravljanje serverima i reprodukciju identičnih okruženja za razvoj.
Mane:
- Strma kriva učenja: Zahteva učenje Nix jezika (funkcionalni jezik za konfiguraciju).
- Odstupanje od Linux standarda (FHS): Klasični binarni fajlovi preuzeti sa interneta (koji očekuju
/bin/bashili/lib64) neće raditi “out of the box” bez Nix pakovanja ili kontejnera/shell-a (poputsteam-runilinix-ld).
