feat: add comprehensive NixOS configuration documentation and structure
- 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.
This commit is contained in:
@@ -0,0 +1,188 @@
|
||||
# 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 # Войти в новый
|
||||
```
|
||||
Reference in New Issue
Block a user