Reorganize Fedora dotfiles and remove legacy profile
This commit is contained in:
199
README.md
199
README.md
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user