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.
7.0 KiB
7.0 KiB
Структура проекта
Как устроена конфигурация.
Главные файлы
flake.nix - Главная входная точка
configuration.nix - Системная конфигурация
Папки
modules/ - Системные модули
home/ada/ - Конфигурация пользователя (Home Manager)
docs/ - Документация (этот гайд)
Версионирование
flake.nix
inputs = {
# Откуда берёмся пакеты
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
# Управление пользовательским окружением
home-manager.url = "github:nix-community/home-manager/release-25.11";
};
- NixOS версия: 25.11 (стабильный релиз)
- Home Manager версия: 25.11 (синхронизирована)
Системные модули
modules/system/
Ядро системы:
- boot.nix - GRUB загрузчик, kernel modules
- nix.nix - Nix конфигурация (flakes, gc, substituters)
- locale.nix - Таймзона (Europe/Moscow), системные locale
modules/desktop/
Рабочее окружение:
- plasma.nix - KDE Plasma 6, Wayland, X11, раскладка клавиатуры
- pipewire.nix - Audio система (PipeWire + ALSA)
modules/networking/
Сетевые сервисы:
- default.nix - NetworkManager, Firewall
modules/services/
Системные сервисы:
- default.nix - SSH (hardened), Firefox, GnuPG, VPN support
modules/users/
Управление пользователями:
- ada.nix - Пользователь
ada(groups, shell: zsh)
modules/virtualisation/
Виртуализация:
- virtualbox.nix - VirtualBox Guest Additions
Home Manager (Пользователь ada)
home/ada/default.nix
Главный файл (импорты всех модулей):
home.username = "ada";
home.homeDirectory = "/home/ada";
home.stateVersion = "25.05";
Модули пользователя
| Файл | Назначение |
|---|---|
| packages.nix | 50+ пакетов (организованы по категориям) |
| alacritty.nix | Терминальный эмулятор (Nord тема, FiraCode) |
| vim.nix | Vim редактор (Nord тема, плагины) |
| micro.nix | Micro редактор (простой редактор) |
| git.nix | Git конфигурация (15+ алиасов, colors) |
| zsh.nix | ZSH shell (30+ алиасов, интеграции) |
| tmux.nix | Tmux терминальный мультиплексер (VI mode) |
| tools.nix | CLI утилиты (bat, fzf, direnv) |
Информационный поток
flake.nix (входная точка)
↓
├─→ nixpkgs (версия 25.11)
├─→ home-manager (версия 25.11)
└─→ nixos-hardware
configuration.nix (система)
├─→ hardware-configuration.nix
├─→ modules/system/* (boot, nix, locale)
├─→ modules/desktop/* (plasma, pipewire)
├─→ modules/networking/* (network)
├─→ modules/services/* (ssh, firefox, etc.)
├─→ modules/users/* (пользователь)
├─→ modules/virtualisation/* (vbox)
└─→ Home Manager (через special args)
home/ada/default.nix (пользователь)
├─→ packages.nix (50+ пакетов)
├─→ alacritty.nix (терминал)
├─→ vim.nix (editor)
├─→ micro.nix (editor)
├─→ git.nix (git config)
├─→ zsh.nix (shell)
├─→ tmux.nix (multiplexer)
└─→ tools.nix (utilities)
Категории пакетов
В packages.nix пакеты организованы так:
Редакторы vim, neovim, micro
IDE vscode, idea-community, zed
Терминал alacritty
Dev tools tmux, fzf, ripgrep, fd, bat, eza...
Git git, gh, lazygit
Сеть curl, wget, ssh, mosh, nmap...
БД sqlite, postgresql
Утилиты jq, yq, zip, unzip, gnupg...
Шрифты nerdfonts (FiraCode)
Какой файл менять?
| Задача | Файл |
|---|---|
| Добавить переменную окружения | home/ada/zsh.nix |
| Добавить программу | home/ada/packages.nix |
| Изменить Git конфиг | home/ada/git.nix |
| Добавить Shell alias | home/ada/zsh.nix |
| Настроить SSH | modules/services/default.nix |
| Открыть firewall порт | modules/networking/default.nix |
| Добавить язык/locale | modules/system/locale.nix |
| Установить новый сервис | Создать новый модуль в modules/ |
| Конфигурировать программу | Создать новый модуль в home/ada/ |
Версия конфигурации
# configuration.nix
system.stateVersion = "25.05";
# home/ada/default.nix
home.stateVersion = "25.05";
# Обновить можно когда готов к миграции
# Но ОСТОРОЖНО - читай документацию NixOS
Как это всё работает?
- flake.nix - говорит Nix где брать пакеты и как их собрать
- configuration.nix - импортирует все системные модули
- modules/ - каждый модуль отвечает за часть системы
- home/ada/default.nix - импортирует все пользовательские модули
- home/ada/ - каждый модуль конфигурирует программу
Когда ты делаешь nh os switch:
1. Нужно собрать конфигурацию
2. Nix читает flake.nix
3. Понимает что использовать из inputs (nixpkgs, home-manager)
4. Собирает configuration.nix (импортирует все modules/)
5. Собирает home/ada/default.nix через Home Manager
6. Создаёт результат (нов поколение системы)
7. Переключается на него
Быстрая справка
# Посмотреть версию
cat configuration.nix | grep stateVersion
# Посмотреть импорты
head -30 configuration.nix
# Список всех модулей
ls -la modules/**/*.nix
# Список Home Manager модулей
ls -la home/ada/*.nix
# Найти файл по названию
find . -name "*ssh*"
Следующие шаги
Если хочешь что-то изменить:
- Найди нужный файл (выше таблица)
- Отредактируй его
- Собери:
nh os switch - Если не работает → см. docs/07-troubleshooting.md