6.2 KiB
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:
sudo dnf install -y $(grep -vE '^[[:space:]]*(#|$)' fedora/packages.txt)
Для GPU нужен настроенный NVIDIA-драйвер с рабочим nvidia-smi. Затем запустить
установщик из любой директории:
./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 применить конфигурацию можно так:
systemctl --user daemon-reload
systemctl --user restart quickshell-control-center.service
Ручной запуск и IPC:
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-модули
Установщик выполняет сборку автоматически. Для ручной пересборки:
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 установит плагины. Затем можно установить парсеры:
:TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash
Если нужно подключить только Neovim вручную:
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.