# DevShell: Окружение для разработки Как использовать devShell для работы с конфигурацией. ## Что такое devShell? DevShell - это временное окружение с инструментами для разработки конфигурации. ## Войти в devShell ```bash cd /home/ada/.dotfiles/nixos nix develop ``` После этого ты находишься в окружении с дополнительными инструментами. ## Что в devShell? Когда входишь в devShell, доступны: ``` nix-output-monitor (nom) - Красивый вывод Nix nvd - Сравнение версий nix-tree - Дерево зависимостей nixfmt-classic - Форматер Nix кода vim, nano - Редакторы git, ripgrep, fd - Утилиты ``` ## Использование devShell ### Форматировать код ```bash # Внутри devShell: nixfmt-classic home/ada/*.nix nixfmt-classic modules/**/*.nix ``` ### Проверить зависимости ```bash # Посмотреть дерево nix-tree nixpkgs# # Сравнить версии между поколениями nvd diff /nix/var/nix/profiles/system /run/current-system ``` ### Красивый вывод сборки ```bash # С красивым выводом nix-output-monitor -- nix build . ``` ## Редактировать конфигурацию Внутри devShell можно редактировать файлы и сразу их форматировать: ```bash vim home/ada/packages.nix # После редактирования: nixfmt-classic home/ada/packages.nix ``` ## Автоматический вход Если у тебя есть `.envrc`, devShell загружается автоматически при входе в папку: ```bash cd /home/ada/.dotfiles/nixos # Если есть direnv - автоматически загрузится devShell ``` Спросит разрешение первый раз: ```bash direnv allow ``` ## Использование с IDE ### VS Code Если открыть папку в VS Code, он автоматически предложит использовать devShell. ### Vim/Neovim Перед запуском vim: ```bash nix develop vim home/ada/zsh.nix ``` ## Выход из devShell ```bash exit # или Ctrl+D ``` ## Типичный workflow ```bash # 1. Войти в devShell cd /home/ada/.dotfiles/nixos nix develop # 2. Отредактировать файл vim home/ada/packages.nix # 3. Форматировать nixfmt-classic home/ada/packages.nix # 4. Проверить синтаксис nix flake check # 5. Вернуться в нормальный shell exit # 6. Собрать конфигурацию (вне devShell) nh os switch ``` ## Команды в devShell ```bash # Форматирование nixfmt-classic **/*.nix # Проверка nix flake check nix flake show --all-systems # Анализ nix-tree nvd diff # Сборка nom -- nix build . # Поиск rg "pattern" fd "pattern" ``` ## Возможные проблемы ### "command not found" Если команда не найдена, убедись что ты внутри devShell: ```bash # Проверить echo $IN_NIX_SHELL # Если пусто, войти: nix develop ``` ### Долгая загрузка devShell Первая загрузка может быть долгой. После этого будет быстрее. ### Нужен другой инструмент? Открой `flake.nix`, найди секцию `devShell` и добавь пакет: ```nix devShells.${system}.default = pkgs.mkShell { buildInputs = with pkgs; [ # Существующие nix-output-monitor # Добавить новый: your-package ]; }; ``` Потом собери: ```bash exit # Выйти из старого devShell nix develop # Войти в новый ```