Полная переработка скрипта установки

This commit is contained in:
retrilzzy committed 2025-08-06 00:35:46 +05:00
1 parent 8a72e4f875
commit 44f003985f
1 file changed
+143 -136
+143 -136
View File
@@ -1,24 +1,65 @@
#!/bin/env bash
set -euo pipefail
install() {
echo ""
read -r -p "❔ Установить $1? (y/N): " choice
case "$choice" in
y|Y|yes|Yes|YES )
echo -e "\033[1;34m▶ \033[0m $2"
eval "$2"
;;
* )
echo "⏭️ Пропущено: $1"
;;
esac
CYAN='\033[1;36m'
BLUE='\033[1;34m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
RESET='\033[0m'
print_section() {
echo -e "\n${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo -e "🔧 $1"
echo -e "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}"
}
install_pacman() {
for pkg in "$@"; do
if ! pacman -Qq "$pkg" &>/dev/null; then
echo -e "${BLUE}📦 Установка: ${pkg}${RESET}"
sudo pacman -S --noconfirm --needed "$pkg"
echo -e "${GREEN}✅ Установлено: ${pkg}${RESET}"
else
echo -e "${YELLOW}⏭️ Пропущено (уже установлено): ${pkg}${RESET}"
fi
done
}
install_yay() {
for pkg in "$@"; do
if ! yay -Qq "$pkg" &>/dev/null; then
echo -e "${BLUE}📦 Установка (AUR): ${pkg}${RESET}"
yay -S --noconfirm "$pkg"
echo -e "${GREEN}✅ Установлено (AUR): ${pkg}${RESET}"
else
echo -e "${YELLOW}⏭️ Пропущено (уже установлено): ${pkg}${RESET}"
fi
done
}
ensure_yay() {
if ! command -v yay &>/dev/null; then
print_section "🚀 Установка AUR помощника yay"
sudo pacman -S --noconfirm --needed base-devel git
git clone https://aur.archlinux.org/yay.git
pushd yay
makepkg -si --noconfirm
popd
rm -rf yay
echo -e "${GREEN}✅ Yay установлен!${RESET}"
else
echo -e "${YELLOW}⏭️ Yay уже установлен${RESET}"
fi
}
backup_configs() {
echo "📦 Создание резервной копии текущих конфигураций..."
echo "ℹ️ Копируются только те, которые затрагиваются этим репозиторием."
print_section "🗃️ Резервное копирование конфигураций"
DATE=$(date +%Y-%m-%d_%H:%M:%S)
BACKUP_DIR=~/.config-backups/"$DATE"
mkdir -p "$BACKUP_DIR"
@@ -30,143 +71,109 @@ backup_configs() {
fi
done
cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" 2>/dev/null || true
cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" || true
echo -e "${GREEN}✅ Бэкап сохранён в $BACKUP_DIR${RESET}"
}
echo "✅ Бэкап сохранён в $BACKUP_DIR"
clone_repo() {
print_section "📂 Клонирование репозитория"
git clone https://github.com/retrilzzy/dotfiles.git ~/dotfiles
echo -e "${GREEN}✅ Репозиторий склонирован в ~/dotfiles!${RESET}"
}
copy_new_configs() {
echo "📂 Копирование новых конфигураций..."
print_section "📂 Применение новых конфигураций"
cp -r ~/dotfiles/Configs/.config/* ~/.config/
cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/
echo "✅ Новый конфигурации скопированы!"
cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/ || true
}
echo "⚠️ Учтите, что отсутствие некоторых пакетов приведет к некорректной работе системы!"
main() {
echo -e "${CYAN} Запуск установки. 3...${RESET}"
sleep 1
echo -e "${CYAN}2...${RESET}"
sleep 1
echo -e "${CYAN}1...${RESET}"
sleep 1
install "Git, Curl (жизненно необходимые пакеты)" \
"sudo pacman -S --noconfirm git curl"
print_section "🛠️ Git"
install_pacman git
ensure_yay
print_section "🌐 Сетевые инструменты"
install_pacman networkmanager network-manager-applet
print_section "🔵 Bluetooth"
install_pacman bluez bluez-tools blueman
print_section "🧩 Интеграция с окружением"
install_pacman xdg-utils xdg-desktop-portal xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-wlr
print_section "🔌 Управление устройствами"
install_pacman brightnessctl playerctl
print_section "🔤 Шрифты"
install_pacman noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-jetbrains-mono
install_yay ttf-meslo-nerd-font-powerlevel10k
print_section "🎨 Темы и иконки"
install_yay rose-pine-cursor rose-pine-hyprcursor
install_pacman papirus-icon-theme
print_section "🖥️ Интерфейс и утилиты"
install_yay wlogout swaync
install_pacman waybar rofi wl-clipboard cliphist kitty flameshot fastfetch
print_section "🖼️ Обои и оформление"
install_yay waypaper swww
print_section "🎞️ Видео-обои"
install_yay mpvpaper-git
print_section "📸 Скриншоты и запись экрана"
install_pacman grim wf-recorder hyprshot
print_section "😊 Эмодзи-панель"
install_yay emote
print_section "🐚 Zsh и плагины"
install_pacman zsh
if [ ! -d ~/.oh-my-zsh ]; then
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" || true
fi
sudo chsh -s /bin/zsh "$USER"
git clone https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" || true
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" || true
git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" || true
print_section "🎛️ GTK и Qt оформление"
install_pacman nwg-look qt5ct qt6ct
install "Yay (AUR помощник) [Без Yay вы не сможете установить часть пакетов!]" \
"sudo pacman -S --noconfirm --needed base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si"
print_section "🏁 Финал"
backup_configs
clone_repo
copy_new_configs
install "Network Manager (сетевые инструменты)" \
"sudo pacman -S --noconfirm network-manager network-manager-applet"
mkdir -p ~/.themes/Adwaita-Dark/gtk-3.0
echo '@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");' > ~/.themes/Adwaita-Dark/gtk-3.0/gtk.css
gsettings set org.gnome.desktop.interface color-scheme prefer-dark || true
gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark || true
nwg-look -a || true
mkdir -p ~/Pictures/Wallpapers
cp -r ~/dotfiles/Assets/wallpapers/* ~/Pictures/Wallpapers/ || curl -o ~/Pictures/Wallpapers/retrilz-dots_0.jpg https://raw.githubusercontent.com/retrilzzy/dotfiles/refs/heads/main/Assets/wallpapers/retrilz-dots_0.jpg
waypaper --backend swww --random --folder ~/Pictures/Wallpapers || true
install "Bluez, Blueman (bluetooth инструменты)" \
"sudo pacman -S --noconfirm bluez bluez-tools blueman"
killall waybar && waybar -c $HOME/.config/waybar/config.jsonc -s $HOME/.config/waybar/styles.css || true
echo -e "${GREEN}✅ Установка завершена!${RESET}"
echo -e "${CYAN}🔁 Перезагрузите систему для полного применения изменений.${RESET}"
}
install "Xdg-utils, Xdg-desktop-portal (интеграция приложений с рабочим столом)" \
"sudo pacman -S --noconfirm xdg-utils xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-desktop-portal"
install "Brightnessctl (управления яркостью)" \
"sudo pacman -S --noconfirm brightnessctl"
install "Playerctl (управление медиа плеером)" \
"sudo pacman -S --noconfirm playerctl"
install "Шрифты (Noto, JetBrains Mono, Nerd Fonts)" \
"sudo pacman -S --noconfirm noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-jetbrains-mono \
&& yay -S --noconfirm ttf-meslo-nerd-font-powerlevel10k"
install "Rose Pine (тема курсора)" \
"yay -S --noconfirm rose-pine-cursor rose-pine-hyprcursor"
install "Papirus (иконки)" \
"sudo pacman -S --noconfirm papirus-icon-theme"
install "Wlogout (меню выключения)" \
"yay -S --noconfirm wlogout"
install "Waybar (wayland бар)" \
"sudo pacman -S --noconfirm waybar"
install "Rofi (меню запуска + меню буфера обмена)" \
"sudo pacman -S --noconfirm rofi"
install "Cliphist (буфер обмена)" \
"sudo pacman -S --noconfirm wl-clipboard cliphist"
install "Kitty (эмулятор терминала)" \
"sudo pacman -S --noconfirm kitty"
install "Zsh + Oh My Zsh (оболочка + менеджер плагинов)" \
"sudo pacman -S --noconfirm zsh \
&& sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\" \
&& chsh -s $(which zsh)"
install "Powerlevel10k (тема для Zsh)" \
"git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k"
install "Плагины для Zsh" \
"git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \
&& git clone https://github.com/zsh-users/zsh-autosuggestions \${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions"
install "Nwg-look (настройка GTK)" \
"sudo pacman -S --noconfirm nwg-look \
&& mkdir -p ~/.themes/Adwaita-Dark/gtk-3.0 \
&& echo '@import url(\"resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css\");' > ~/.themes/Adwaita-Dark/gtk-3.0/gtk.css \
&& gsettings set org.gnome.desktop.interface color-scheme prefer-dark \
&& gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark"
install "Qt5ct (настройка Qt)" \
"sudo pacman -S --noconfirm qt5ct"
install "Swaync (уведомления похожие на GNOME)" "sudo pacman -S --noconfirm swaync"
install "Waypaper (интерфейс для управления обоями)" \
"yay -S --noconfirm waypaper swww \
&& cp -r ~/dotfiles/Assets/wallpapers/* ~/Pictures/Wallpapers/"
install "Mpvpaper (бэкенд для видео обоев)" "sudo pacman -S --noconfirm mpvpaper"
install "Grim, Hyprshot (cкриншоты)" \
"sudo pacman -S --noconfirm grim && yay -S --noconfirm hyprshot"
install "Wf-recorder (запись экрана)" \
"sudo pacman -S --noconfirm wf-recorder"
install "Emote (выбор эмодзи)" "yay -S --noconfirm emote"
install "Flameshot (мощная утилита для скриншотов)" "sudo pacman -S --noconfirm flameshot"
install "Fastfetch (похвастаться линуксом)" "sudo pacman -S --noconfirm fastfetch"
echo "✅ Установка пакетов завершена!"
backup_configs
copy_new_configs
echo "ℹ️ Для полного применения новых конфигураций потребуется перезагрузка системы."
echo "✅ Установка завершена! Если потребуется восстановить старую конфигурацию, запустите:"
echo " ~/dotfiles/Scripts/restore.sh"
main "$@"