130 lines
6.2 KiB
Markdown
130 lines
6.2 KiB
Markdown
# 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.
|