Reorganize Fedora dotfiles and remove legacy profile

This commit is contained in:
Mikhail Kilin
2026-07-25 12:38:39 +03:00
parent a601a53660
commit 6cb1d53a70
75 changed files with 2146 additions and 3974 deletions

199
README.md
View File

@@ -1,108 +1,129 @@
# Dotfiles
Personal dotfiles for development environment configuration.
Личный репозиторий конфигураций Neovim и Linux desktop-сессии на Fedora.
## Structure
## Структура
Сейчас в репозитории поддерживаются два рабочих слоя:
- `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)
```
nvim/ # Neovim config (symlink to ~/.config/nvim)
├── init.lua
└── lua/
├── config/
│ ├── autocmds.lua
│ ├── keymaps.lua
│ └── options.lua
└── plugins/
├── bufferline.lua
├── cmp.lua
├── colorscheme.lua
├── editor.lua
├── git.lua
├── lsp.lua
├── lualine.lua
├── session.lua
├── telescope.lua
└── treesitter.lua
bazzite/ # Bazzite (Fedora) + Niri compositor configs
├── niri/config.kdl
├── btop/btop.conf
├── glow/glow.yml
├── gtk-3.0/
│ ├── colors.css
│ ├── gtk.css
│ └── settings.ini
├── gtk-4.0/
│ ├── colors.css
│ ├── gtk.css
│ └── settings.ini
├── fuzzel/fuzzel.ini
├── waybar/
│ ├── config.jsonc
│ └── style.css
├── xsettingsd/xsettingsd.conf
├── environment.d/intel-gtk-fix.conf
└── autostart/steam.desktop
Для 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
Requires Neovim 0.11+ — uses native APIs (`vim.lsp.config`, `vim.lsp.enable`, built-in treesitter).
Конфигурация использует lazy.nvim, native LSP API и встроенный Treesitter.
Leader — Space. Поддерживаемые языки: Rust, Zig, TypeScript/JavaScript и C/C++.
**Plugin manager:** lazy.nvim (auto-bootstraps on first launch).
LSP-серверы:
**Leader key:** Space.
- `rust-analyzer` через rustaceanvim;
- `clangd` и `ts_ls` через Mason;
- `zls` устанавливается отдельно в системе.
### Languages
Первый запуск Neovim установит плагины. Затем можно установить парсеры:
Rust, Zig, TypeScript/JavaScript, C/C++.
### LSP servers
| Server | Language | Install |
|---|---|---|
| rust-analyzer | Rust | `rustup component add rust-analyzer` (via rustaceanvim) |
| clangd | C/C++ | auto-installed via mason |
| ts_ls | TypeScript/JS | auto-installed via mason |
| zls | Zig | `brew install zls` |
### Key plugins
telescope, treesitter, nvim-cmp, bufferline, neo-tree, gitsigns, lazygit, lualine, which-key, persistence, alabaster theme.
## Bazzite
Configs for Bazzite (Fedora Atomic) with Niri Wayland compositor.
| Config | Description |
|---|---|
| `niri/config.kdl` | Niri compositor |
| `fuzzel/fuzzel.ini` | App launcher |
| `waybar/` | Top panel (config + style) |
| `btop/btop.conf` | System monitor |
| `glow/glow.yml` | Terminal markdown viewer |
| `gtk-3.0/`, `gtk-4.0/` | GTK theme and colors |
| `xsettingsd/xsettingsd.conf` | X11/XWayland settings (fonts, theme) |
| `environment.d/intel-gtk-fix.conf` | Intel GPU environment fix |
| `autostart/steam.desktop` | Steam autostart |
## Setup
### macOS (Neovim)
```bash
ln -s ~/Docs/Projects/dotfiles/nvim ~/.config/nvim
brew install lazygit
# First nvim launch will auto-install plugins, then run:
# :TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash
```vim
:TSInstall rust zig typescript javascript tsx c cpp lua json yaml toml html css markdown bash
```
### Bazzite
Если нужно подключить только Neovim вручную:
```bash
# Symlink configs to ~/.config/
for dir in niri fuzzel waybar btop glow gtk-3.0 gtk-4.0 xsettingsd environment.d autostart; do
ln -sf ~/Docs/Projects/dotfiles/bazzite/$dir ~/.config/$dir
done
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.