Skip to content
mrVanich
Назад до нотаток

NixOS: перший досвід у Hyper-V та WSL на Windows 11

NixOS давно стоїть у списку дистрибутивів, які хочеться не просто встановити, а зрозуміти. Він змінює звичну логіку Linux: система описується кодом, пакети не перезаписують один одного, а невдале оновлення можна відкрутити назад. Це не «ще один Ubuntu», тому найкращий перший крок – окрема віртуальна машина в Hyper-V, без ризику для робочого комп’ютера.

У цій нотатці зібрав власний стартовий маршрут: що саме відрізняє NixOS від Debian/Ubuntu та Fedora, як поставити його у Hyper-V і як спробувати Nix у WSL 2 на Windows 11.

Що таке Nix і NixOS

Nix – менеджер пакетів. Його можна встановити поверх іншого Linux-дистрибутива, зокрема Ubuntu у WSL. NixOS – повноцінний Linux-дистрибутив, у якому Nix керує не лише пакетами, а й конфігурацією системи: користувачами, службами, мережею, завантажувачем, робочим столом.

Головний файл для початку – /etc/nixos/configuration.nix. Після зміни опису система збирається в нову «генерацію» командою nixos-rebuild. Стара генерація не зникає одразу, тому до неї можна повернутися.

Чим NixOS відрізняється від Ubuntu, Debian та Fedora

ПідхідDebian / UbuntuFedoraNixOS
Пакетиapt, пакети змінюють звичні системні каталогиdnf, RPM-пакети та актуальніші версіїnix, пакети ізольовані в /nix/store
НалаштуванняКоманди, файли в /etc, інструкції «зроби раз»Подібно до класичного Linux; добре підходить для сучасних технологійДекларативний опис у файлах .nix
ОновленняПоступово змінюють поточну системуПоступово змінюють поточну системуСтворюють нову генерацію системи
ВідкатМожливий, але зазвичай ручний і залежить від ситуаціїМожливий окремими інструментами; Fedora Silverblue ближча до незмінної ОСВбудований: попередня генерація або команда відкату
Поріг входуНайнижчий, багато знайомих інструкційПомірний; сучасна екосистемаВищий: потрібно освоїти Nix-мову та інший спосіб мислення

У звичайному Linux логіка часто така: встановив пакет, відредагував кілька файлів, запустив службу, забув точні кроки. У NixOS бажаний стан описується явно. Це особливо приємно для серверів, тестових машин і середовищ розробки: конфігурацію можна зберігати в Git і відтворити на іншому комп’ютері.

NixOS не робить усі проблеми Linux магічно простими. Він міняє їхній характер: замість випадкових ручних змін з’являється потреба акуратно описати систему.

Що варто знати до старту

  • Шляхи до програм можуть не бути звичними /usr/bin/...; Nix зберігає збірки у власному сховищі.
  • Не все варто робити імперативно через nix-env. Для NixOS краще поступово переносити важливі речі у configuration.nix.
  • Flakes дають відтворювані, зафіксовані залежності. Для першого вечора вони не обов’язкові, але це хороший наступний крок.
  • У специфічного заліза, драйверів, VPN-клієнтів або пропрієтарного софту може бути більше нюансів, ніж в Ubuntu. Саме тому Hyper-V – гарне місце для першої спроби.

Перший запуск NixOS у Hyper-V

Для старту завантажую графічний ISO з офіційної сторінки NixOS. Графічний інсталятор дозволяє пройти базове встановлення без ручного розбиття диска.

Створення віртуальної машини

  1. У Hyper-V Manager створюю New → Virtual Machine.
  2. Обираю Generation 2, 2 віртуальні процесори, від 4 ГБ оперативної пам’яті та динамічний VHDX-диск на 40-64 ГБ.
  3. Підключаю ISO в розділі DVD Drive.
  4. Для простого доступу до мережі можна використати Default Switch.
  5. Якщо ISO не завантажується, у налаштуваннях VM вимикаю Secure Boot для цієї тестової машини. Це типова перевірка сумісності завантажувального образу.

На етапі встановлення зручно обрати GNOME або KDE Plasma, створити звичайного користувача та залишити автоматичне розбиття лише віртуального диска. Перед експериментами із конфігурацією зробіть Hyper-V Checkpoint – так можна повернутися до чистого стану за хвилину.

Мінімальна конфігурація після встановлення

Відкриваю /etc/nixos/configuration.nix і додаю всередину існуючих фігурних дужок базові пакети та підтримку гостьової системи Hyper-V:

{ config, pkgs, ... }:

{
  networking.networkmanager.enable = true;
  virtualisation.hypervGuest.enable = true;

  environment.systemPackages = with pkgs; [
    git
    curl
    vim
    htop
    wget
  ];
}

Не замінюйте весь файл своїм фрагментом: інсталятор уже додав важливі параметри диска, завантаження та обладнання. Додайте лише потрібні рядки до наявної конфігурації, збережіть файл і застосуйте зміни:

sudo nixos-rebuild switch

Команда збере нову конфігурацію та активує її. Якщо хочеться перевірити без зміни запису завантажувача, є режим sudo nixos-rebuild test. Повернутися до попереднього активного стану можна так:

sudo nixos-rebuild switch --rollback

Nix у WSL 2 на Windows 11

Для щоденної роботи з командами Nix не обов’язково одразу запускати повний NixOS. Найпростіший шлях – залишити Ubuntu у WSL 2 та встановити у ньому саме менеджер пакетів Nix. Так можна звикнути до nix shell, пакетів і flakes, не чіпаючи завантажувач та базову систему.

1. Підготуйте WSL

У PowerShell від імені адміністратора:

wsl --install -d Ubuntu
wsl --update
wsl --version

Багатокористувацький інсталятор Nix потребує systemd. У Ubuntu WSL відкрийте /etc/wsl.conf:

sudo nano /etc/wsl.conf
[boot]
systemd=true

Потім у PowerShell перезапустіть усі дистрибутиви:

wsl --shutdown

2. Встановіть Nix у Ubuntu WSL

Запустіть Ubuntu WSL знову і використайте команду з офіційної сторінки завантаження Nix. Перед запуском завжди варто розуміти, що саме робить інсталяційний скрипт у вашому середовищі.

sh <(curl -L https://nixos.org/nix/install) --daemon

Відкрийте новий WSL-термінал після завершення. Далі увімкніть сучасні команди Nix і flakes:

sudo mkdir -p /etc/nix
echo 'experimental-features = nix-command flakes' | sudo tee -a /etc/nix/nix.conf

nix --version
nix shell nixpkgs#hello -c hello
nix shell nixpkgs#python312 nixpkgs#git

Остання команда відкриє тимчасову оболонку, де є Python і Git, але вони не «засмічують» вашу Ubuntu-систему через apt. Саме це один із найзручніших сценаріїв для Nix у WSL: окреме відтворюване середовище під конкретний проєкт.

План першого вечора з NixOS

  1. Поставити NixOS у Hyper-V та зробити Checkpoint чистої системи.
  2. Додати до configuration.nix Git, редактор, htop та NetworkManager.
  3. Застосувати конфігурацію через nixos-rebuild switch.
  4. Навмисно змінити щось просте, а потім перевірити відкат.
  5. У WSL спробувати nix shell для одного невеликого проєкту.
  6. Лише після цього переносити /etc/nixos у Git і знайомитися з flakes.

Корисні посилання