Add install.sh for a clean Fedora machine

Enables the sachesi/hyprland and avengemedia/dms COPRs, installs Hyprland,
DMS and the tools used by the scripts, optionally the Flatpak apps, then
deploys the configs into ~/.config. Existing configs are moved to
*.bak-<time>, so re-running is safe; --dry-run only prints the plan.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 13:53:48 +05:00
co-authored by Claude Sonnet 5.5
parent 946d93faa7
commit e47f54d394
2 changed files with 182 additions and 20 deletions
+30 -20
View File
@@ -19,6 +19,7 @@ Hyprland 0.57 на Fedora 44: тёмный минималистичный рай
| `dms/settings.json` | настройки DMS (панель, тема `pink`, лаунчер) |
| `systemd/user/hyprland-session.target` | нужен порталам (`xdg-desktop-portal`) вне uwsm |
| `kitty/kitty.conf` | терминал |
| `install.sh` | установка на чистую Fedora: репозитории, пакеты, Flatpak, конфиги |
| `sync.sh` | копирует живой конфиг из `~/.config` в репозиторий |
Панель, уведомления, лаунчер, блокировка, обои и буфер обмена — это
@@ -48,27 +49,37 @@ Host proxmox1
бэкап в `~/.local/state/ssh-menu/backups`. Для хостов с `env: prod` перед broadcast
и запуском команды спрашивается подтверждение.
## Установка
## Установка на чистую Fedora
Hyprland нет в репозиториях Fedora 44, он ставится из COPR:
```bash
sudo dnf copr enable sachesi/hyprland
sudo dnf install hyprland hyprlock hypridle hyprpaper hyprpicker \
xdg-desktop-portal-hyprland hyprland-guiutils hyprpolkitagent cliphist playerctl
# инструменты, которые используют скрипты
sudo dnf install fzf tmux kitty jq grim slurp wl-clipboard brightnessctl \
nautilus keepassxc nm-connection-editor tesseract tesseract-langpack-eng \
tesseract-langpack-rus ImageMagick jetbrains-mono-fonts
```
DMS ставится из COPR `avengemedia/dms` (см. документацию DMS). В автозапуске и на биндах
используются Flatpak-приложения: `com.google.Chrome`, `org.telegram.desktop`,
`org.remmina.Remmina`, `com.nextcloud.desktopclient.nextcloud`.
Нужна обычная Fedora (в том числе без Hyprland), пользователь с `sudo` и сеть:
```bash
git clone git@git.ibrash.duckdns.org:aibrash/hyprland-rising.git
cd hyprland-rising
./install.sh --dry-run # посмотреть, что будет сделано, ничего не меняя
./install.sh # установить
```
Скрипт по шагам:
1. подключает COPR `sachesi/hyprland` (Hyprland нет в репозиториях Fedora) и `avengemedia/dms` (DMS);
2. ставит Hyprland с утилитами, DMS и инструменты для скриптов (kitty, fzf, tmux, grim, tesseract и т. д.);
3. ставит Flatpak-приложения из биндов и автозапуска: Chrome, Telegram, Remmina, клиент Nextcloud;
4. раскладывает конфиги в `~/.config` (`hypr`, плагин и настройки DMS, `kitty`, `hyprland-session.target`),
включает плагин `networkEditor` и создаёт `~/.ssh/sockets`.
Существующие конфиги не затираются: они переносятся в `*.bak-<время>`, повторный запуск безопасен.
Этапы можно пропустить: `--no-packages`, `--no-flatpak`, `--no-config`; `--yes` отключает вопросы.
После установки выйдите из сессии и выберите в GDM **Hyprland** (не `hyprland-uwsm`).
COPR — сторонние репозитории, пакеты в них никем не проверяются.
### Вручную (без скрипта)
```bash
sudo dnf copr enable sachesi/hyprland avengemedia/dms
sudo dnf install hyprland hyprlock hypridle hyprpaper hyprpicker hyprland-guiutils hyprpolkitagent \
xdg-desktop-portal-hyprland xdg-desktop-portal-gtk dms
cp -r hypr ~/.config/
mkdir -p ~/.config/dms/plugins ~/.config/systemd/user
cp -r dms/plugins/networkEditor ~/.config/dms/plugins/
@@ -76,10 +87,9 @@ cp systemd/user/hyprland-session.target ~/.config/systemd/user/
systemctl --user daemon-reload
```
Чтобы плагин `networkEditor` заработал, включите его в настройках DMS (Plugins) и добавьте виджет
в панель. Либо скопируйте `dms/settings.json` в `~/.config/dms/` и создайте
`~/.config/dms/plugin_settings.json` с содержимым `{"networkEditor": {"enabled": true}}`, затем `dms restart`.
После этого выберите в GDM сессию **Hyprland** (не `hyprland-uwsm`).
Полный список пакетов-инструментов см. в начале `install.sh`. Плагин `networkEditor` включите в настройках
DMS (Plugins) или создайте `~/.config/dms/plugin_settings.json` с `{"networkEditor": {"enabled": true}}`
и выполните `dms restart`.
## Под себя