# Dotfiles Личный репозиторий конфигураций Neovim и Linux desktop-сессии на Fedora. ## Структура Сейчас в репозитории поддерживаются два рабочих слоя: - `nvim/` — конфигурация Neovim 0.11+; - `fedora/` — основной профиль Fedora с Niri и QuickShell. Новые полноценные системные профили добавляются отдельными каталогами верхнего уровня: `arch/`, `debian/`, `laptop/` и т. п. Файлы текущего профиля не нужно смешивать между системами. Основные части профиля Fedora: | Путь | Назначение | | --- | --- | | `fedora/niri/config.kdl` | Композитор, автозапуск, правила окон и хоткеи. | | `fedora/quickshell/control-center/` | Bar, control center, media popup, OSD и notifications. | | `fedora/quickshell/scripts/` | Скрипты погоды и NVIDIA GPU для QuickShell. | | `fedora/systemd/user/` | User unit для QuickShell. | | `fedora/khal-calendar/` | Rust-модуль календаря. | | `fedora/mail-counter/` | Rust-счётчик непрочитанных писем Thunderbird. | | `fedora/wallpapers/wallpaper.png` | Канонический wallpaper профиля. | | `fedora/packages.txt` | Список пакетов Fedora. | | `install.sh` | Переносимая установка ссылок и Rust-бинарников. | Скрытые каталоги вроде `.git`, `.claude` и `.serena` относятся к инструментам разработки, а не к desktop-профилю. ## Установка Fedora Установить зависимости из [fedora/packages.txt](fedora/packages.txt): ```bash sudo dnf install -y $(grep -vE '^[[:space:]]*(#|$)' fedora/packages.txt) ``` Для GPU нужен настроенный NVIDIA-драйвер с рабочим `nvidia-smi`. Затем запустить установщик из любой директории: ```bash ./install.sh ``` Скрипт определяет свой корень автоматически, подключает конфигурации Fedora и Neovim через ссылки в `$HOME/.config`, создаёт `$HOME/.local/bin`, подключает QuickShell и systemd unit, создаёт ссылку `$HOME/.config/wallpaper.png`, собирает оба Rust-модуля и устанавливает их в `$HOME/.local/bin`. Обычные файлы конфигурации не должны молча затираться установщиком: если на месте ссылки уже лежит реальный файл или каталог, скрипт остановится и сообщит об этом. ## QuickShell Niri запускает `quickshell-control-center.service`, а unit запускает shell из стабильной ссылки `$HOME/.config/quickshell/control-center`. После изменения QML применить конфигурацию можно так: ```bash systemctl --user daemon-reload systemctl --user restart quickshell-control-center.service ``` Ручной запуск и IPC: ```bash qs -p "$HOME/.config/quickshell/control-center" qs ipc -p "$HOME/.config/quickshell/control-center" call controlcenter toggle qs ipc -p "$HOME/.config/quickshell/control-center" call controlcenter close qs ipc -p "$HOME/.config/quickshell/control-center" call osd volume_up ``` Bar показывает погоду, загрузку GPU, CPU, память, root filesystem, раскладку, аудиовход, календарь и остальные интерактивные индикаторы. Температурные пороги настраиваются в control center; отдельная старая панель больше не используется. ## Rust-модули Установщик выполняет сборку автоматически. Для ручной пересборки: ```bash mkdir -p "$HOME/.local/bin" cargo build --release --manifest-path fedora/khal-calendar/Cargo.toml install -m 755 fedora/khal-calendar/target/release/khal-calendar "$HOME/.local/bin/khal-calendar" cargo build --release --manifest-path fedora/mail-counter/Cargo.toml install -m 755 fedora/mail-counter/target/release/mail-counter "$HOME/.local/bin/mail-counter" ``` Календарь использует `khal`, а mail-counter читает Thunderbird `global-messages-db.sqlite` и отдаёт JSON, который читает QuickShell. ## Neovim Конфигурация использует lazy.nvim, native LSP API и встроенный Treesitter. Leader — Space. Поддерживаемые языки: Rust, Zig, TypeScript/JavaScript и C/C++. LSP-серверы: - `rust-analyzer` через rustaceanvim; - `clangd` и `ts_ls` через Mason; - `zls` устанавливается отдельно в системе. Первый запуск Neovim установит плагины. Затем можно установить парсеры: ```vim :TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash ``` Если нужно подключить только Neovim вручную: ```bash ln -sfn "$PWD/nvim" "${XDG_CONFIG_HOME:-$HOME/.config}/nvim" ``` ## Правила работы с репозиторием - Сначала читать этот `README.md`, затем целевой конфиг. - `fedora/` — текущий source of truth для Fedora, Niri и QuickShell. - Незакоммиченные правки пользователя сохранять; несвязанные файлы не откатывать. - Проверять runtime-конфигурацию, если поведение системы расходится с текстом checkout. - Не добавлять секреты, токены, кэши, логи и машинный мусор. - Markdown-документация живёт только в корневом `README.md`; новые инструкции добавлять туда, а не создавать отдельные README.