Interaktywny installer NixOS z interfejsem TUI (gum/dialog). Przeprowadza za rękę przez cały proces instalacji — od partycjonowania dysku po działający desktop KDE Plasma 6. Po awarii: ./install.sh --resume skanuje dyski i wznawia od ostatniego checkpointu.
W przeciwieństwie do Gentoo — tu nic się nie kompiluje. Binarne paczki z cache.nixos.org, instalacja w ~15-30 minut.
Pobierz NixOS ISO (Minimal — mały obraz, wystarczy do instalacji):
- https://nixos.org/download/ → NixOS: Minimal ISO image
Plasma Desktop ISO też zadziała, ale waży ~2 GiB. Minimal (~1 GiB) jest szybszy do pobrania i ma wszystko co potrzeba — installer sam doinstaluje KDE/GNOME z binarnego cache.
Nagraj na pendrive:
# UWAGA: /dev/sdX to pendrive, nie dysk systemowy!
sudo dd if=nixos-minimal-*.iso of=/dev/sdX bs=4M status=progress
syncNa Windows: Rufus lub balenaEtcher.
- BIOS/UEFI: F2, F12, lub Del przy starcie
- Wyłącz Secure Boot (potrzebne dla NVIDIA drivers)
- Boot z USB w trybie UEFI
Powinno działać od razu:
ping -c 3 nixos.orgnmcli (NetworkManager — dostępny na NixOS Live):
nmcli device wifi list
nmcli device wifi connect "NazwaSieci" password "TwojeHaslo"iwctl (iwd — alternatywa):
iwctl
station wlan0 scan
station wlan0 get-networks
station wlan0 connect "NazwaSieci"
exitwpa_supplicant (manual fallback):
ip link set wlan0 up
wpa_supplicant -B -i wlan0 -c <(wpa_passphrase "NazwaSieci" "Haslo")
dhcpcd wlan0Sprawdź: ping -c 3 nixos.org
sudo su
nix-shell -p git --run "git clone https://github.com/szoniu/nixos.git"
cd nixos
./install.shUWAGA: Nie uruchamiaj
./install.shwewnątrznix-shell. Po wyjściu znix-shell(lub crashu instalatora) komendy systemowe (ls,cat) mogą przestać działać.nix-shell -p git --run "..."kończy się automatycznie po sklonowaniu.
Albo bez git:
sudo su
curl -L https://github.com/szoniu/nixos/archive/main.tar.gz | tar xz
cd nixos-main
./install.shWyjmij pendrive, reboot. Zobaczysz systemd-boot, potem SDDM z KDE Plasma 6.
Po zalogowaniu — aktualizacja systemu i pakietów:
sudo nixos-rebuild switch --upgradeTo jedno polecenie pobiera najnowsze pakiety z kanału NixOS i przebudowuje system. Żeby dodać/usunąć pakiety — edytuj konfigurację:
sudo nano /etc/nixos/configuration.nix
sudo nixos-rebuild switch# Tylko konfiguracja (generuje plik .conf, nic nie instaluje)
./install.sh --configure
# Instalacja z gotowego configa (bez wizarda)
./install.sh --config moj-config.conf --install
# Wznów po awarii (skanuje dyski w poszukiwaniu checkpointów)
./install.sh --resume
# Dry-run — przechodzi cały flow BEZ dotykania dysków
./install.sh --dry-run- Komputer z UEFI (nie Legacy BIOS)
- Secure Boot wyłączony
- Minimum 30 GiB wolnego miejsca na dysku
- Internet (LAN lub WiFi)
- NixOS Live ISO (lub dowolne live z
nixos-installidialog)
| # | Ekran | Co konfigurujesz |
|---|---|---|
| 1 | Welcome | Sprawdzenie wymagań (root, UEFI, sieć, nixos-install) |
| 2 | Preset | Opcjonalne załadowanie gotowej konfiguracji |
| 3 | Hardware | Podgląd wykrytego CPU, GPU (hybrid), dysków, peryferiów, Windows/Linux |
| 4 | Channel | NixOS stable/unstable + Flakes |
| 5 | Dysk | Wybór dysku + schemat (auto/dual-boot/manual) |
| 6 | Filesystem | ext4 / btrfs / XFS + opcjonalne LUKS szyfrowanie |
| 7 | Swap | zram / partycja / brak |
| 8 | Sieć | Hostname |
| 9 | Locale | Timezone, język, keymap |
| 10 | Bootloader | systemd-boot (domyślny) / GRUB (multi-boot z os-prober) |
| 11 | Kernel | Default / Latest / LTS / Zen |
| 12 | GPU | NVIDIA (auto open-kernel) / AMD / Intel |
| 13 | Desktop | KDE Plasma 6 + aplikacje + Flatpak/drukowanie/Bluetooth |
| 14 | Użytkownicy | Root, user, grupy, SSH |
| 15 | Pakiety | Dodatkowe pakiety nix + Hyprland ecosystem + opcje sprzętowe (fingerprint, Thunderbolt, itp.) |
| 16 | Preset save | Eksport konfiguracji |
| 17 | Podsumowanie | Przegląd + potwierdzenie YES |
Po potwierdzeniu installer:
- Partycjonuje dysk (opcjonalnie z LUKS)
- Uruchamia
nixos-generate-config(hardware detection) - Generuje
configuration.nixz Twoimi wyborami - Uruchamia
nixos-install - Ustawia hasła
- Auto-wykrywanie ESP z Windows Boot Manager i innych Linuksów
- ESP nigdy nie jest formatowany
- systemd-boot automatycznie widzi Windows
- Wizard do zmniejszania partycji jeśli brak wolnego miejsca (NTFS, ext4, btrfs)
- Ostrzeżenia o istniejących OS-ach na wybranych partycjach
presets/desktop-nvidia.conf # NVIDIA + ext4
presets/desktop-amd.conf # AMD + btrfs
presets/desktop-intel-encrypted.conf # Intel + LUKS
Presety przenośne — sprzęt re-wykrywany przy imporcie.
Gdy komenda się nie powiedzie, installer wyświetli menu recovery:
- (r)etry — ponów komendę (np. po naprawieniu problemu w shellu)
- (s)hell — wejdź do shella, napraw ręcznie, wpisz
exitżeby wrócić - (c)ontinue — pomiń ten krok i kontynuuj (ostrożnie!)
- (l)og — pokaż log błędu
- (a)bort — przerwij instalację
Jeśli instalacja została przerwana (OOM kill, zawieszenie, utrata SSH, przerwa w prądzie), możesz wznowić jedną komendą:
./install.sh --resume--resume automatycznie:
- Skanuje wszystkie partycje (ext4/btrfs/xfs) w poszukiwaniu danych z poprzedniej instalacji
- Odzyskuje checkpointy (informacje o ukończonych fazach) i plik konfiguracji
- Jeśli config nie przetrwał — próbuje go odtworzyć z zainstalowanego systemu (fstab, hostname, timezone, keymap, itp.)
- Pomija już ukończone fazy i kontynuuje od miejsca przerwania
Co przetrwało na dysku docelowym:
- Checkpointy — pliki w
/tmp/nixos-installer-checkpoints/na partycji docelowej - Config —
/tmp/nixos-installer.confna partycji docelowej (zapisywany po fazie partycjonowania)
Podczas instalacji masz dostęp do wielu konsol. Przełączaj się przez Ctrl+Alt+F1...F6:
- TTY1 — installer
- TTY2-6 — wolne konsole do debugowania
Na drugim TTY możesz:
# Podgląd co się dzieje
top
# Log installera
tail -f /tmp/nixos-installer.log
# Sprawdź czy coś nie zawiesiło się
ps aux | grep -E "tee|nix"Na maszynie docelowej (bootowanej z NixOS Live ISO):
# 1. Ustaw hasło dla użytkownika nixos
# UWAGA: NixOS Live nie pozwala na `passwd root` — konto root jest zablokowane.
# Domyślny użytkownik to `nixos` (bez hasła, z sudo).
passwd nixos
# 2. Sprawdź czy sshd działa (na NixOS Live ISO powinien być domyślnie)
systemctl status sshd
# 3. Jeśli nie działa — uruchom
systemctl start sshd
# 4. Sprawdź IP
ip -4 addr show | grep inetZ innego komputera:
# Łączysz się jako nixos (nie root!)
ssh -o PubkeyAuthentication=no nixos@<IP-live-ISO>
# Potem przełącz na root i uruchom installer
sudo su
nix-shell -p git --run "git clone https://github.com/szoniu/nixos.git"
cd nixos
./install.shInstaller działa normalnie przez SSH — TUI renderuje się w terminalu SSH.
"Permission denied" przy
ssh root@...? NixOS Live blokuje logowanie root przez SSH. Łącz się jakonixos:ssh nixos@<IP>, potemsudo su."Connection refused"? Sprawdź czy
sshddziała:systemctl status sshd."WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED"? Po restarcie Live ISO klucze SSH hosta się zmieniają. Usuń stary klucz i połącz się ponownie:
ssh-keygen -R <IP-live-ISO> ssh -o PubkeyAuthentication=no nixos@<IP-live-ISO>
Ważne: Jeśli połączenie SSH się zerwie, instalacja w zwykłej sesji zostanie przerwana. Zawsze uruchamiaj installer w tmux:
# Na Live ISO (po połączeniu SSH — tmux jest preinstalowany na NixOS Live):
tmux new -s install
# Przełącz na root i uruchom installer wewnątrz tmux
sudo su
nix-shell -p git --run "git clone https://github.com/szoniu/nixos.git"
cd nixos
./install.shJeśli połączenie SSH się zerwie:
# Połącz się ponownie i wróć do sesji
ssh nixos@<IP-live-ISO>
tmux attach -t installInstalacja będzie nadal działać w tle — nic nie stracisz.
Otwórz drugie okno terminala (lub drugi panel tmux — Ctrl+B potem "):
ssh nixos@<IP-live-ISO>
# Logi w czasie rzeczywistym
sudo tail -f /tmp/nixos-installer.log
# Co się instaluje
topgit clone— SSL certificate not yet valid — zegar systemowy jest przestarzały. Ustaw datę:date -s "2026-03-09 12:00:00"(wstaw aktualną).git clone— Permission denied (publickey) — użyj HTTPS:git clone https://github.com/szoniu/nixos.git, nie SSH (git@github.com:...).- Preflight: "Network connectivity required" — installer pinguje
nixos.orgigoogle.com. Jeśli sieć działa ale DNS nie, dodaj ręcznie:echo "nameserver 8.8.8.8" >> /etc/resolv.conf.
- nixos-install — "Name or service not known" — DNS przestał działać. Na innym TTY (
Ctrl+Alt+F2) wpisz:echo "nameserver 8.8.8.8" >> /etc/resolv.conf, wróć na TTY1 i wybierzr(retry). - Installer zawisł, nic się nie dzieje — sprawdź na TTY2 (
Ctrl+Alt+F2) czynix-buildlubnix-storedziałają wtop. Jeśli tak — pobieranie/instalacja trwa, po prostu czekaj. - Przerwa w prądzie / reboot — uruchom
./install.sh --resume, automatycznie wznowi od ostatniego checkpointu. - Menu "retry / shell / continue / abort" — installer napotkał błąd.
r= spróbuj ponownie,s= otwórz shell i napraw ręcznie (potemexit),c= pomiń ten krok,a= przerwij instalację.
- Log — pełny log instalacji:
/tmp/nixos-installer.log - Coś jest nie tak z konfiguracją — użyj
./install.sh --configureżeby przejść wizarda ponownie
Installer ma trzy backendy TUI (w kolejności priorytetu):
- gum (domyślny) — nowoczesny, zaszyty w repo jako
data/gum.tar.gz(~4.5 MB). Ekstrahowany automatycznie do/tmpna starcie. Zero dodatkowych zależności. - dialog — klasyczny TUI, dostępny na większości live ISO
- whiptail — fallback gdy brak
dialog
Backend jest wybierany automatycznie. Żeby wymusić fallback na dialog/whiptail:
GUM_BACKEND=0 ./install.shŻeby zaktualizować bundlowaną wersję gum:
# 1. Pobierz nowy tarball (podmień wersję)
curl -fSL -o data/gum.tar.gz \
"https://github.com/charmbracelet/gum/releases/download/v0.18.0/gum_0.18.0_Linux_x86_64.tar.gz"
# 2. Zaktualizuj GUM_VERSION w lib/constants.sh (musi pasować)
# : "${GUM_VERSION:=0.18.0}"Własne skrypty uruchamiane przed/po fazach instalacji:
cp hooks/before_install.sh.example hooks/before_install.sh
chmod +x hooks/before_install.sh
# Edytuj hook...Dostępne hooki: before_preflight, after_preflight, before_disks, after_disks, before_generate, after_generate, before_config, after_config, before_install, after_install, before_finalize, after_finalize.
Hooki mają dostęp do wszystkich zmiennych konfiguracyjnych (TARGET_DISK, FILESYSTEM, HOSTNAME, GPU_VENDOR, itp.) oraz MOUNTPOINT, LOG_FILE, SCRIPT_DIR, CONFIG_FILE, DRY_RUN.
./install.sh [OPCJE] [POLECENIE]
Polecenia:
(domyślnie) Pełna instalacja (wizard + install)
--configure Tylko wizard konfiguracyjny
--install Tylko instalacja (wymaga configa)
--resume Wznów po awarii (skanuje dyski)
Opcje:
--config PLIK Użyj podanego pliku konfiguracji
--dry-run Symulacja bez destrukcyjnych operacji
--force Kontynuuj mimo nieudanych prereq
--non-interactive Przerwij na każdym błędzie (bez recovery menu)
--help Pokaż pomoc
Zmienne środowiskowe:
GUM_BACKEND=0 Wymuś fallback na dialog/whiptail (pomiń gum)
Installer automatycznie wykrywa i konfiguruje:
- CPU — Intel/AMD, microcode
- GPU — NVIDIA (proprietary + open-kernel), AMD, Intel + hybrid GPU (PRIME offload)
- ASUS ROG/TUF — wykrywanie przez DMI, opcjonalny
asusd(asusctl) wconfiguration.nix - Bluetooth — auto-wykrywany, konfigurowany w ekranie Desktop
- Czytnik linii papilarnych — fprintd (Synaptics, Goodix, Elan, AuthenTec, Validity)
- Thunderbolt — bolt daemon
- Sensory IIO — akcelerometr, żyroskop, czujnik światła (laptopy 2-in-1)
- Kamera — wykrywanie webcam
- WWAN LTE — ModemManager (Intel XMM7360)
Wykryte peryferiale pojawiają się jako opcje w ekranie "Pakiety" — można je włączyć jednym kliknięciem.
| NixOS | Gentoo | |
|---|---|---|
| Czas instalacji | ~15-30 min | 3-8h |
| Kompilacja | Nie (binarne) | Tak (ze źródeł) |
| Konfiguracja | configuration.nix | make.conf + emerge |
| Rollback | Wbudowany | Brak (chyba btrfs) |
| Szyfrowanie LUKS | Wbudowane w installer | Do zrobienia |
bash tests/test_config.sh # Config round-trip
bash tests/test_disk.sh # Disk planning
bash tests/test_nixos_config.sh # configuration.nix generation
bash tests/test_infer_config.sh # Config inference from installed system
bash tests/test_hybrid_gpu.sh # Hybrid GPU + recommendation
bash tests/test_validate.sh # Config validation before install
bash tests/test_peripherals.sh # Peripheral detection + config vars
bash tests/test_checkpoint.sh # Checkpoint set/reached/validate/migrate
bash tests/test_resume.sh # Resume from disk scanning + recovery
bash tests/test_multiboot.sh # Multi-OS serialize/deserialize
bash tests/test_shrink.sh # Partition shrink helpers
bash tests/shellcheck.sh # LintWszystkie testy są standalone — nie wymagają root ani hardware. Używają DRY_RUN=1 i NON_INTERACTIVE=1.
install.sh — Główny entry point
configure.sh — Wrapper: tylko wizard TUI
lib/ — Moduły biblioteczne (sourcowane, nie uruchamiane)
tui/ — Ekrany TUI (każdy = funkcja, return 0/1/2)
data/ — GPU database, motyw TUI, bundled gum binary
presets/ — Gotowe presety
hooks/ — Hooki (*.sh.example)
tests/ — Testy
P: Jak długo trwa instalacja? ~15-30 minut (binarne paczki). Zależy od prędkości internetu.
P: Mogę na VM?
Tak, UEFI mode. VirtualBox: Settings → System → Enable EFI. W QEMU: dodaj -bios /usr/share/ovmf/OVMF.fd.
P: Mogę potem zmienić konfigurację?
Tak! sudo nano /etc/nixos/configuration.nix → sudo nixos-rebuild switch. To kwintesencja NixOS.
P: Co z Secure Boot? Wyłącz w BIOS. NVIDIA drivers nie są podpisane.
P: Jak wrócić do poprzedniej konfiguracji?
W menu systemd-boot możesz wybrać starszą generację. sudo nixos-rebuild switch --rollback też działa.
P: Mogę użyć innego live ISO niż NixOS?
Tak, dowolne live ISO z Linuxem zadziała, pod warunkiem że ma bash, nixos-install, sfdisk. Installer ma zaszyty gum jako backend TUI, więc dialog/whiptail nie jest wymagany.
P: Co jeśli gum nie działa?
Installer automatycznie użyje dialog lub whiptail jako fallback. Możesz też wymusić fallback: GUM_BACKEND=0 ./install.sh.
P: Mam laptopa ASUS ROG/TUF — czy installer to wspiera?
Tak. Installer automatycznie wykrywa hardware ASUS ROG/TUF przez DMI i oferuje instalację asusd (asusctl) do zarządzania podświetleniem, trybami wydajności i profilami GPU.
P: Mam multi-boot (kilka Linuxów). Po aktualizacji kernela inne systemy zniknęły z menu boot. Jeśli używasz GRUB (wybierany w wizardzie dla multi-boot), odśwież konfigurację:
sudo nixos-rebuild switchNixOS z boot.loader.grub.useOSProber = true automatycznie wykryje inne systemy przy każdym nixos-rebuild.
Jeśli używasz systemd-boot — nie wykrywa innych Linuxów. Przełącz na GRUB w /etc/nixos/configuration.nix:
boot.loader.systemd-boot.enable = false;
boot.loader.grub.enable = true;
boot.loader.grub.device = "nodev";
boot.loader.grub.efiSupport = true;
boot.loader.grub.useOSProber = true;Potem: sudo nixos-rebuild switch.
P: Zapomniałem odświeżyć GRUB i po restarcie nie widzę innych systemów. Systemy dalej są na dysku — nic nie zostało usunięte. Wystarczy:
- Uruchom dowolny z widocznych systemów
- Uruchom
sudo grub-mkconfig -o /boot/grub/grub.cfg(lubsudo nixos-rebuild switchz NixOS) - Restart — wszystkie systemy powinny być widoczne
Jeśli żaden system nie startuje (uszkodzony GRUB), boot z Live USB i napraw z chroot:
mount /dev/<root-partycja> /mnt
mount /dev/<esp> /mnt/boot
mount --rbind /dev /mnt/dev && mount --rbind /sys /mnt/sys && mount -t proc /proc /mnt/proc
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg