Nix
⏳ Doba čtení: ~3 min (476 slov)Nix
Konec dependenci-hell! Nix je balíčkovací systém, který umožňuje instalovat a spravovat software izolovaně od zbytku systému. To znamená, že můžete mít různé verze stejného programu nainstalované současně, aniž by se navzájem ovlivňovaly.
Stejně jako lze pro Python použít venv nebo conda, pro Node.js nvm, pro Ruby rvm a pro Go gvm, tak Nix umožňuje spravovat balíčky a jejich závislosti pro různé jazyky a nástroje.
Jeho výhoda o proti výše zmíněným nástrojům je, že Nix je univerzální a umožňuje spravovat balíčky pro různé jazyky a nástroje, což z něj činí velmi užitečný nástroj pro vývojáře, kteří pracují s různými technologiemi a zároveň nechtějí zaplevelit svůj systém různými verzemi balíčků a závislostí.
Jedno z jeho použití je nix-shell, který umožňuje spustit shell s izolovaným prostředím, kde jsou dostupné pouze balíčky a závislosti, které jste specifikovali. Stačí k tomu vytvořit soubor shell.nix s definicí balíčků, a je jedno zda jde o Python, Node.js, Ruby, Go, APT nebo cokoliv jiného. Nix se postará o to, aby byly všechny závislosti správně nainstalovány a dostupné v izolovaném prostředí.
Instalace Nixu
sudo apt install nix-bin
sudo usermod -aG nix-users $USER
newgrp nix-users
sudo systemctl start nix-daemon
nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs
nix-channel --update
Snad poslední balíček, které pro vývoj instaluji růčo.
Demostrace použití Nixu pro instalaci yt-dlp a jeho závislostí
Github: Nix_yt-dlp
Soubor popisující závislosti a prostředí pro yt-dlp v Nixu může vypadat například takto:
# shell.nix
# Define isolated environment with required tools
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
# These packages will be available only inside the nix-shell
buildInputs = [
pkgs.yt-dlp
pkgs.ffmpeg
pkgs.nodejs_22
pkgs.gnumake
pkgs.gawk
];
# Hook executed immediately after entering the shell
shellHook = ''
echo "========================================"
echo "Environment is ready."
echo "yt-dlp version: $(yt-dlp --version)"
echo "Node.js version: $(node --version)"
echo "========================================"
echo "Run 'make' to start parallel downloads."
'';
}
Nyní ve stejném adresáři stačí spustit:
nix-shell
Nix chvíli zachroustá, stáhne a nainstaluje všechny závislosti a spustí shell s izolovaným prostředím.
A bash vás pak pozdraví například s:
========================================
Environment is ready.
yt-dlp version: 2026.08.19
Node.js version: v22.23.3
========================================
Run 'make' to start parallel downloads.
Pro opuštění prostředí použijte příkaz exit.