Explorar o código

UPDATE: installer

Vitaliy Timtsurak hai 5 meses
pai
achega
35bc319fe1
Modificáronse 5 ficheiros con 117 adicións e 86 borrados
  1. 40 50
      Readme.md
  2. 0 1
      aurlist.txt
  3. 6 0
      home/.local/share/applications/nekoray.desktop
  4. 70 35
      install.sh
  5. 1 0
      pkglist.txt

+ 40 - 50
Readme.md

@@ -1,66 +1,56 @@
-Мои Dotfiles (Arch Linux + bspwm)
+# Мои Dotfiles
 
-Это моя персональная конфигурация для Arch Linux.
+Этот репозиторий содержит мои личные файлы конфигурации (dotfiles) для Arch Linux. Он управляется с помощью кастомного скрипта `install.sh`, который автоматизирует установку пакетов и создание символических ссылок.
 
-Основное окружение построено на bspwm (менеджер окон) и sxhkd (горячие клавиши).
+## Структура
 
-Что внутри
+*   `install.sh`: Главный скрипт для управления конфигурацией.
+*   `pkglist.txt`: Основной список пакетов для установки через `pacman`.
+*   `aurlist.txt`: Основной список пакетов для установки из AUR (с помощью `yay`).
+*   `pkglist-*.txt`, `aurlist-*.txt`: (Опционально) Дополнительные списки пакетов для выборочной установки (например, `pkglist-dev.txt`).
+*   `config/`: Конфигурации, которые будут связаны с `~/.config/`.
+*   `home/`: Конфигурации, которые будут связаны с домашней директорией `~/`.
+*   `system/`: Системные конфигурации (например, для `/etc/`), которые применяются интерактивно.
 
-WM: bspwm, sxhkd
+## Быстрая установка
 
-Панель: polybar
+**Внимание:** Скрипт предназначен для использования в Arch-подобных дистрибутивах. Используйте на свой страх и риск.
 
-Лаунчер: rofi
+1.  **Подготовьте систему:**
+    *   Убедитесь, что в `/etc/pacman.conf` раскомментирован репозиторий `[multilib]`.
+    *   Обновите систему: `sudo pacman -Syu`
+    *   Установите `git`: `sudo pacman -S git`
 
-Композитор: picom
+2.  **Клонируйте репозиторий:**
+    ```bash
+    git clone https://github.com/te4gh0st/dotfiles ~/dotfiles
+    ```
 
-Терминал: alacritty
+3.  **Запустите установку:**
+    ```bash
+    cd ~/dotfiles
+    ./install.sh install
+    ```
+    Скрипт установит необходимые пакеты и создаст символические ссылки для конфигураций.
 
-Уведомления: dunst
+## Управление
 
-Списки пакетов для Pacman (pkglist.txt) и AUR (aurlist.txt).
крипт `install.sh` предоставляет несколько команд для управления вашими dotfiles:
 
-Скрипт install.sh для автоматического управления всем этим.
+*   `./install.sh install`
+    Полная установка: установка всех пакетов из основного списка, предложение установки из дополнительных списков и создание всех символических ссылок.
 
-Быстрая установка
+*   `./install.sh update`
+    Обновление: скачивает последние изменения из Git-репозитория (`git pull`) и применяет их (устанавливает пакеты, обновляет симлинки).
 
-Этот репозиторий предназначен для развертывания на "чистой" системе Arch Linux.
+*   `./install.sh check`
+    Проверка: сканирует все списки пакетов и симлинки, чтобы убедиться, что все установлено и находится на своих местах.
 
-ВАЖНО: Раскомментируйте [multilib] в /etc/pacman.conf и выполните sudo pacman -Syu.
+*   `./install.sh system`
+    Применение системных конфигураций из папки `system/`. Процесс интерактивный: скрипт покажет различия и запросит подтверждение на замену каждого файла.
 
-Установите git:
+*   `./install.sh drivers`
+    Проверка оборудования (видеокарта, Wi-Fi) и вывод рекомендаций по установке драйверов.
 
-sudo pacman -S git
-
-
-Клонируйте репозиторий:
-
-# Замените [URL] на URL вашего git-репозитория
-git clone https://github.com/te4gh0st/dotfiles ~/dotfiles
-
-
-Перейдите в папку и запустите установку:
-
-cd ~/dotfiles
-chmod +x install.sh
-./install.sh install
-
-
-(Опционально) Примените системные настройки (например, locale.conf, vconsole.conf):
-
-./install.sh system
-
-
-Управление
-
-Скрипт install.sh используется для всего управления:
-
-./install.sh install: Полная установка (пакеты, симлинки, папки XDG).
-
-./install.sh update: Обновление из Git (git pull) + применение изменений.
-
-./install.sh check: Проверка, все ли установлено и на своих местах.
-
-./install.sh system: Интерактивная установка системных файлов (из папки system/).
-
-./install.sh drivers: Проверка оборудования и рекомендации по драйверам.
+*   `./install.sh help`
+    Показывает справку по всем доступным командам.

+ 0 - 1
aurlist.txt

@@ -1,6 +1,5 @@
 # ~/dotfiles/aurlist.txt
 # (Yay будет установлен автоматически, если его нет)
 
-betterlockscreen
 bibata-cursor-theme
 networkmanager-dmenu

+ 6 - 0
home/.local/share/applications/nekoray.desktop

@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Nekoray
+Exec=/home/vitaliy/bin/nekoray/launcher
+Icon=/home/vitaliy/bin/nekoray/nekobox.png
+Type=Application
+Terminal=false

+ 70 - 35
install.sh

@@ -49,11 +49,11 @@ install_yay() {
         msg "YAY не найден. Установка YAY..."
         # Проверяем наличие git и base-devel перед установкой yay
         if ! pacman -Q git &>/dev/null || ! pacman -Q base-devel &>/dev/null; then
-             sudo pacman -S --needed --noconfirm git base-devel
+             sudo pacman -S --needed git base-devel
         fi
         
         git clone https://aur.archlinux.org/yay.git /tmp/yay
-        (cd /tmp/yay && makepkg -si --noconfirm)
+        (cd /tmp/yay && makepkg -si)
         rm -rf /tmp/yay
         msg "YAY установлен."
     else
@@ -63,29 +63,60 @@ install_yay() {
 
 # 2. Установка пакетов (Pacman и YAY)
 install_packages() {
-    msg "Установка пакетов из Pacman ($PACMAN_PKGS)..."
-    # Читаем файл, убираем inline-комментарии (после #),
-    # убираем пустые строки, xargs очищает лишние пробелы
-    # и передает все как отдельные аргументы в pacman.
+    # --- Сбор пакетов для установки ---
+    msg "Сбор пакетов для установки..."
+
+    # Основные пакеты
     local pacman_args=$(sed 's/#.*//' "$SCRIPT_DIR/$PACMAN_PKGS" | grep -vE '^\s*$' | xargs)
+    local aur_args=$(sed 's/#.*//' "$SCRIPT_DIR/$AUR_PKGS" | grep -vE '^\s*$' | xargs)
+
+    # --- Поиск и выбор дополнительных пакетов ---
+    # Ищем файлы вида pkglist-*.txt и aurlist-*.txt, исключая основные
+    local optional_pacman_lists=($(find "$SCRIPT_DIR" -maxdepth 1 -name "pkglist-*.txt" ! -name "$PACMAN_PKGS"))
+    local optional_aur_lists=($(find "$SCRIPT_DIR" -maxdepth 1 -name "aurlist-*.txt" ! -name "$AUR_PKGS"))
 
+    if [ ${#optional_pacman_lists[@]} -gt 0 ] || [ ${#optional_aur_lists[@]} -gt 0 ]; then
+        warn "Найдены дополнительные списки пакетов:"
+        for list in "${optional_pacman_lists[@]}"; do echo "  -> $(basename "$list") (Pacman)"; done
+        for list in "${optional_aur_lists[@]}"; do echo "  -> $(basename "$list") (AUR)"; done
+        
+        read -p "Хотите выбрать пакеты из этих списков для установки? [y/N]: " choice < /dev/tty
+        if [[ "$choice" == "y" || "$choice" == "Y" ]]; then
+            # Добавляем пакеты из выбранных списков
+            for list in "${optional_pacman_lists[@]}"; do
+                read -p "  -> Установить из '$(basename "$list")'? [y/N]: " list_choice < /dev/tty
+                if [[ "$list_choice" == "y" || "$list_choice" == "Y" ]]; then
+                    pacman_args+=" $(sed 's/#.*//' "$list" | grep -vE '^\s*$' | xargs)"
+                fi
+            done
+            for list in "${optional_aur_lists[@]}"; do
+                read -p "  -> Установить из '$(basename "$list")'? [y/N]: " list_choice < /dev/tty
+                if [[ "$list_choice" == "y" || "$list_choice" == "Y" ]]; then
+                    aur_args+=" $(sed 's/#.*//' "$list" | grep -vE '^\s*$' | xargs)"
+                fi
+            done
+        fi
+    fi
+
+    # --- Установка пакетов Pacman ---
     if [[ ! -z "$pacman_args" ]]; then
-        sudo pacman -S --needed --noconfirm $pacman_args
+        msg "Установка пакетов из Pacman..."
+        # Убрали --noconfirm, чтобы можно было решать конфликты вручную
+        sudo pacman -S --needed $pacman_args
     else
-        msg "Список Pacman пуст, пропуск."
+        msg "Список Pacman для установки пуст."
     fi
     
-    msg "Проверка и установка YAY..."
-    install_yay
-    
-    msg "Установка пакетов из AUR ($AUR_PKGS)..."
-    # Аналогично для YAY
-    local aur_args=$(sed 's/#.*//' "$SCRIPT_DIR/$AUR_PKGS" | grep -vE '^\s*$' | xargs)
-    
+    # --- Установка пакетов AUR ---
     if [[ ! -z "$aur_args" ]]; then
-        yay -S --needed --noconfirm $aur_args
+        msg "Проверка и установка YAY..."
+        install_yay
+        
+        msg "Установка пакетов из AUR..."
+        # Убрали --noconfirm
+        yay -S --needed $aur_args
     else
-        msg "Список AUR пуст, пропуск."
+        msg "Список AUR для установки пуст."
     fi
     
     msg "Установка пакетов завершена."
@@ -161,27 +192,31 @@ check_config() {
     # ... (проверка пакетов остается без изменений) ...
     msg "Проверка установленных пакетов Pacman..."
     local missing_pacman=0
-    while IFS= read -r line || [[ -n "$line" ]]; do
-        local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
-        if [[ -z "$pkg" ]]; then continue; fi
-        if ! pacman -Q "$pkg" &>/dev/null; then
-            warn "  -> Не найден (Pacman): $pkg"
-            missing_pacman=1
-        fi
-    done < "$SCRIPT_DIR/$PACMAN_PKGS"
-    if [ $missing_pacman -eq 0 ]; then msg "Все пакеты Pacman установлены."; fi
+    for f in $(find "$SCRIPT_DIR" -maxdepth 1 -name "pkglist*.txt"); do
+        while IFS= read -r line || [[ -n "$line" ]]; do
+            local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
+            if [[ -z "$pkg" ]]; then continue; fi
+            if ! pacman -Q "$pkg" &>/dev/null; then
+                warn "  -> Не найден (Pacman, из $(basename $f)): $pkg"
+                missing_pacman=1
+            fi
+        done < "$f"
+    done
+    if [ $missing_pacman -eq 0 ]; then msg "Все пакеты Pacman из списков 'pkglist*.txt' установлены."; fi
 
     msg "Проверка установленных пакетов AUR..."
     local missing_aur=0
-    while IFS= read -r line || [[ -n "$line" ]]; do
-        local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
-        if [[ -z "$pkg" ]]; then continue; fi
-        if ! pacman -Q "$pkg" &>/dev/null; then
-            warn "  -> Не найден (AUR): $pkg"
-            missing_aur=1
-        fi
-    done < "$SCRIPT_DIR/$AUR_PKGS"
-    if [ $missing_aur -eq 0 ]; then msg "Все пакеты AUR установлены."; fi
+    for f in $(find "$SCRIPT_DIR" -maxdepth 1 -name "aurlist*.txt"); do
+        while IFS= read -r line || [[ -n "$line" ]]; do
+            local pkg=$(echo "$line" | sed 's/#.*//' | xargs)
+            if [[ -z "$pkg" ]]; then continue; fi
+            if ! pacman -Q "$pkg" &>/dev/null; then
+                warn "  -> Не найден (AUR, из $(basename $f)): $pkg"
+                missing_aur=1
+            fi
+        done < "$f"
+    done
+    if [ $missing_aur -eq 0 ]; then msg "Все пакеты AUR из списков 'aurlist*.txt' установлены."; fi
     
     
     msg "Проверка симлинков..."

+ 1 - 0
pkglist.txt

@@ -14,6 +14,7 @@ man-pages
 texinfo
 vi
 vim
+neovim
 sudo
 
 # --- Утилиты ФС ---