Uživatelské nástroje

Nástroje pro tento web


nixos

Operační systém NixOS

NixOS je nezávislá Linuxová distribuce, která zásadně mění způsob, jakým je operační systém spravován, konfigurován a aktualizován. Na rozdíl od tradičních distribucí (jako je Ubuntu, Debian nebo Arch Linux) je NixOS postaven na deklarativním a funkcionálním modelu správy systému.

Celý operační systém – včetně jádra, ovladačů, systémových služeb, uživatelských účtů a nainstalovaných aplikací – je definován v jediném konfiguračním souboru. Srdcem celého systému je balíčkovací manažer Nix.

Hlavní pilíře NixOS

NixOS stojí na třech základních principech, které z něj dělají unikátní nástroj pro vývojáře, systémové administrátory a nadšence do DevOps:

1. Deklarativní konfigurace

V běžném Linuxu konfigurujete systém imperativně: zadáváte příkazy jako `apt install nginx`, ručně upravujete soubory v `/etc` a spouštíte služby přes `systemctl`. V NixOS napíšete požadovaný stav systému do souboru `/etc/nixos/configuration.nix` (pomocí programovacího jazyka Nix) a systém se podle toho sám sestaví.

Příklad konfigurace (zapnutí SSH a instalace balíčků):

{ config, pkgs, ... }:
 
{
  boot.loader.systemd-boot.enable = true;
  networking.hostName = "nix-server";
 
  services.openssh.enable = true;
 
  environment.systemPackages = with pkgs; [
    vim
    git
    htop
  ];
 
  users.users.anna = {
    isNormalUser = true;
    extraGroups = [ "wheel" ]; # Povolení sudo
  };
}

2. Izolace a neměnnost (Immutability)

V NixOS neexistují standardní adresáře jako `/bin`, `/sbin`, `/lib` nebo `/usr/bin` plné sdílených knihoven. Všechny balíčky jsou uloženy v izolovaných adresářích uvnitř Nix store (adresář `/nix/store`).

Každá položka v Nix store má unikátní název začínající kryptografickým hashem (např. `/nix/store/h323ms…-git-2.40.0/`). Tento hash se počítá ze všech vstupů, které byly použity k sestavení balíčku (zdrojový kód, verze překladače, závislosti). Díky tomu je vyloučeno tzv. „závislostní peklo“ (Dependency Hell) – různé aplikace mohou bezproblémově používat různé verze stejné knihovny.

3. Atomické aktualizace a rollbacky

Když změníte konfiguraci a aplikujete ji příkazem `nixos-rebuild switch`, NixOS vytvoří novou generaci systému. Původní generace ale zůstává nedotčená.

  • Pokud se po aktualizaci cokoli pokazí (systém nenaběhne, nová verze ovladače způsobí pád), můžete se okamžitě vrátit zpět (rollback) k předchozímu funkčnímu stavu.
  • Seznam předchozích generací se zobrazuje přímo v bootloaderu (GRUB/systemd-boot) při startu počítače. Pokažená aktualizace tak nikdy systém definitivně „nerozbije“.

Výhody a nevýhody

Výhody:

  • Stoprocentní replikovatelnost: Váš konfigurační soubor můžete vzít, nahrát ho na úplně jiný počítač (nebo virtuální server) a po spuštění získáte na bit přesně stejné prostředí.
  • Testování bez rizika: Můžete experimentovat s unstable balíčky a systémovými službami. V případě problému stačí jeden příkaz a jste zpět v bezpečí.
  • Čistý systém: Pokud balíček odeberete z konfigurace a spustíte `nix-collect-garbage`, z adresáře `/nix/store` se vymažou veškeré stopy po dané aplikaci včetně všech jejích specifických závislostí.

Nevýhody:

  • Strmá křivka učení: Jazyk Nix a funkcionální pojetí systému vyžadují úplnou změnu myšlení oproti běžným distribucím.
  • Nekompatibilita s běžnými binárkami: Stažené předkompilované binární soubory z internetu (které natvrdo hledají knihovny v `/lib` nebo `/usr/lib`) na NixOS bez dodatečné úpravy (např. pomocí nástrojů `patchelf` nebo `steam-run`) nespustíte.
  • Menší komunita: Ačkoliv repozitář *nixpkgs* patří k největším a nejaktivnějším na GitHubu, hledání řešení specifických problémů může být těžší než u Ubuntu nebo Arch Linuxu.

Pokročilé koncepty: Flakes a Home Manager

Moderní ekosystém NixOS se opírá o dva populární komunitní nástroje:

  • Nix Flakes: Funkce (aktuálně stále v experimentálním režimu, ale masivně využívaná), která zajišťuje absolutní hermetičnost konfigurace. Pomocí souboru `flake.lock` uzamkne přesné verze všech zdrojů (včetně celého repozitáře balíčků), takže konfigurace se sestaví identicky dnes, i za pět let.
  • Home Manager: Nástroj, který rozšiřuje deklarativní přístup z celého systému i na uživatelský domovský adresář (`$HOME`). Umožňuje deklarativně spravovat konfigurace aplikací (tzv. dotfiles), jako jsou nastavení pro `.bashrc`, `zsh`, konfigurace pro Neovim, git nebo okenní manažery.

Související články:

Tagy: linux distribuce nixos nix devops configuration_management immutability

nixos.txt · Poslední úprava: autor: admin