# Отладка и решение проблем Что делать когда что-то не работает. ## Конфигурация не собирается ### Ошибка синтаксиса ```bash # Проверить синтаксис nix flake check # Посмотреть ошибку nh os test ``` Читай ошибку внимательно - она указывает на строку файла. ## Ошибка: пакет не найден ```bash # Проверить существует ли пакет nix search nixpkgs package-name # Полное имя может быть другим nix search nixpkgs git-lfs ``` Если пакет не найден: 1. Проверь имя в [https://search.nixos.org](https://search.nixos.org) 2. Возможно пакет устарел 3. Попробуй альтернативу ## Ошибка: модуль не импортируется ```bash # Если добавил новый модуль и он не применяется nix flake check # Проверить импорт в configuration.nix grep "./modules/mymodule" configuration.nix # Проверить путь (должен быть правильный относительный путь) ``` Старые импорты кэшируются. Попробуй: ```bash rm -rf .direnv # Если использует direnv nix flake update ``` ## Сборка зависает Обычно при первой сборке это может быть долгим (20-30 минут). Если зависает надолго: ```bash # Прервать (Ctrl+C) # Очистить кэш nix flake update # Пробовать снова nh os test ``` ## Команда не работает после apply ```bash # Обновить PATH exec $SHELL # Или перезагрузить terminal # В новом окне терминала попробуй команду ``` ## SSH не работает ```bash # Проверить статус sudo systemctl status ssh # Посмотреть логи sudo journalctl -u sshd -f # Перезагрузить sudo systemctl restart ssh # Проверить firewall sudo nftables list tables nmcli device show ``` ## Git алиасы не работают ```bash # Применить конфигурацию nh os switch # Проверить что установилась git config --list | grep alias # Перезагрузить shell exec $SHELL ``` ## Пакет not found после добавления ```bash # Пересобрать nh os switch # Обновить PATH если нужно exec $SHELL # Проверить пакет which package-name ``` ## Система не загружается Если сломал конфигурацию и система не грузится: ```bash # При загрузке в GRUB выбери предыдущую версию системы ``` Или откати изменения: ```bash cd /home/ada/.dotfiles/nixos git checkout configuration.nix nh os switch ``` ## Firewall блокирует ```bash # Проверить статус sudo nftables list tables # Открыть порт (редактор файл) # modules/networking/default.nix networking.firewall.allowedTCPPorts = [ 22 8080 ]; # Собрать nh os switch ``` ## Нет интернета ```bash # Проверить связь ping 8.8.8.8 # Проверить DNS nslookup google.com # Перезагрузить NetworkManager sudo systemctl restart NetworkManager # Посмотреть статус nmcli status ``` ## Логирование и отладка ### Посмотреть логи системы ```bash # Последние ошибки sudo journalctl -b | tail -50 # Логи конкретного сервиса sudo journalctl -u ssh -f # По уровню важности sudo journalctl -p err ``` ### Проверить что загрузилось ```bash # Посмотреть текущую конфигурацию systemctl status ps aux # Проверить конкретный сервис systemctl status sshd systemctl status NetworkManager ``` ## Производительность Если система медленная: ```bash # Посмотреть процессы btop # Посмотреть использование диска du -sh ~/* # Нулевые файлы find / -size 0 2>/dev/null # GC собрал много? du -sh /nix/store nix store gc ``` ## Вернуть рабочее состояние ### Откатить последнее изменение ```bash # В git git checkout HEAD -- home/ada/packages.nix # Пересобрать nh os switch ``` ### Посмотреть историю поколений ```bash nh os list # Откатить на предыдущее поколение sudo nix-env -p /nix/var/nix/profiles/system --switch-generation N ``` ### Резервная копия Есть файл конфигурации до изменений: ``` configuration.nix.backup ``` Если что-то критичное сломалось: ```bash cp configuration.nix configuration.nix.broken cp configuration.nix.backup configuration.nix nh os switch ``` ## Получить помощь ### Проверить логи ```bash # Полные логи последней сборки nixos-rebuild dry-run 2>&1 | head -100 ``` ### Читать ошибки Обычно в ошибке указывается: 1. **Файл** - какой файл конфига проблема 2. **Строка** - на какой строке 3. **Ошибка** - что именно не так ### Поиск в документации ```bash # Поиск опции nixos-option services.openssh # Поиск в nixpkgs nix search nixpkgs pattern ``` ## Когда ничего не помогает ```bash # 1. Откатить на рабочее состояние git checkout HEAD~1 # 2. Собрать nh os switch # 3. Проверить что работает systemctl status # 4. Медленнее добавить изменения по одному ```