17b0cdfbac
- Introduced `08-structure.md` detailing project structure, main files, and versioning. - Created `README.md` for documentation overview and quick start guide. - Added user-specific configurations for Alacritty, Vim, Micro, Git, Zsh, Tmux, and tools. - Implemented system modules for desktop environment (KDE Plasma), audio (PipeWire), networking, and services (OpenSSH, GnuPG). - Configured Nix settings with flakes support and garbage collection. - Established user management for `ada` with necessary groups and shell settings. - Enabled VirtualBox guest additions for improved VM experience.
189 lines
4.1 KiB
Markdown
189 lines
4.1 KiB
Markdown
# 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#<package-name>
|
||
|
||
# Сравнить версии между поколениями
|
||
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 <package>
|
||
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 # Войти в новый
|
||
```
|