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.
Description
No description provided
Readme 7.7 MiB
Languages
QML 71.5%
Lua 11.9%
CSS 8.6%
Rust 6.3%
Shell 1.7%