Shhware

English · Russian

Установка

Поддерживаемые дистрибутивы

ДистрибутивInitОсобенность
Artix Linuxs6seatd (вместо elogind)
Void Linuxrunitmusl (библиотека C, вместо glibc)

Скоро

  • Gentoo
  • CRUX
  • KISS

Перед установкой

  • Пользователь в группе wheel. Всё запускайте от него, не от root: от root install.sh не запустится.
  • Интернет.

Установка на Artix

Свежая базовая установка с init s6* (важно) и seatd* (важно) (выберите seatd-s6).

Как установить Artix (Artix wiki)

  1. Установите git:
    sudo pacman -S git
  2. Склонируйте репозиторий:
    git clone https://github.com/kiran-why/Shh-dotfiles.git ~/Shh-dotfiles
  3. Установите dotfiles:
    cd ~/Shh-dotfiles
    sh install.sh
    Лог установки: ~/.local/state/shh/install.log (только последний запуск, начиная после меню shh config).
  4. Удалите репозиторий (по желанию), только в режиме copy (по умолчанию: конфиги скопированы, а не ссылаются на репозиторий)* (важно) в shh config; shh update скачает его заново:
    cd ~ && rm -rf ~/Shh-dotfiles
  5. Перезагрузитесь и войдите на tty1: sway запустится сам.

Установка на Void

Свежая базовая установка с musl (библиотека C, вместо glibc)* (важно): проверено только на musl. seatd ставится вместе с пакетами (без elogind).

Как установить Void (Void handbook)

  1. Обновите xbps* (важно), на свежей системе это нужно сделать первым:
    sudo xbps-install -Su xbps
  2. Установите git:
    sudo xbps-install -S git
  3. Склонируйте репозиторий:
    git clone https://github.com/kiran-why/Shh-dotfiles.git ~/Shh-dotfiles
  4. Установите dotfiles:
    cd ~/Shh-dotfiles
    sh install.sh
    Лог установки: ~/.local/state/shh/install.log (только последний запуск, начиная после меню shh config).
  5. Удалите репозиторий (по желанию), только в режиме copy (по умолчанию: конфиги скопированы, а не ссылаются на репозиторий)* (важно) в shh config; shh update скачает его заново:
    cd ~ && rm -rf ~/Shh-dotfiles
  6. Перезагрузитесь и войдите на tty1: sway запустится сам.

Дополнительно

Проверка имён пакетов

cd ~/Shh-dotfiles
sh install.sh --check

Проверяет, что каждый пакет из списков есть в репозиториях, ничего не ставит. Проверяются все списки дистрибутива, а не только нужные этой машине: system/artix/packages, system/void/packages. Установлены ли пакеты, проверяет shh doctor.

Как работает скрипт

install.sh один для всех дистрибутивов. Он подключает к себе (., в том же процессе) lib/lib.sh и шаги своего дистрибутива, system/DISTRO/distro.sh.

Отдельными процессами запускает:

  • scripts/hardware: тип виртуальной машины или видеокарты;
  • shh config: что ставить, только при первом запуске;
  • lib/link.sh (подробнее): кладёт конфиги в домашнюю папку;
  • scripts/vpn setup: служба sing-box, если sing-box не выключен в shh config.

Читает списки (DISTRO = artix или void):

  • system/DISTRO/packages/common.csv: пакеты для любой машины;
  • system/DISTRO/packages/CARD.csv: драйвер для каждой найденной видеокарты (Artix: amd, intel, nvidia, nvidia-580xx; Void: amd, intel);
  • system/DISTRO/services.txt: службы, которые запускаются при загрузке;
  • components/DISTRO_components.txt: части, которые можно выключить в shh config.

Меняет системные файлы. Файл, который пишется целиком, сначала переименовывается в FILE.bak-DATE, если в нём было другое; в остальные только дописываются строки:

  • /etc/iwd/main.conf: iwd сам получает IP-адреса, DNS идёт через resolvconf;
  • /etc/dhcpcd.conf: добавляет denyinterfaces wl*, dhcpcd только для проводной сети, wifi за iwd;
  • /etc/resolvconf.conf: DNS-серверы из shh config;
  • /etc/modprobe.d/nvidia-modeset.conf: только с драйвером NVIDIA, kernel modesetting для sway;
  • /etc/modprobe.d/nobeep.conf: выключает PC speaker (shh config: nobeep);
  • /etc/udev/rules.d/90-shh-backlight.rules: группа video может менять яркость экрана;
  • /etc/sudoers.d/shh-power: poweroff, reboot и сон без пароля;
  • /etc/sudoers.d/dotfiles-temp: sudo без пароля, пока работает скрипт, удаляется в конце;
  • если sing-box включён: /etc/sing-box/ и его служба;
  • Artix: /etc/pam.d/system-login: добавляет pam_rundir (XDG_RUNTIME_DIR при входе, без него sway не запустится);
  • Artix: /etc/pacman.conf: репозитории Arch ([extra]), а с настройкой pacman в shh config цвета и параллельные загрузки; /etc/makepkg.conf: сборка из AUR на всех ядрах;
  • Void: /etc/alsa/conf.d/: ALSA-программы играют через pipewire.

Ещё делает zsh оболочкой входа и добавляет вас в группы для seatd, звука и видео.

Шаги

  1. check_system: не root, дистрибутив поддерживается, есть sudo, списки, интернет;
  2. choose_parts: меню shh config при первом запуске;
  3. start_log: копия вывода в ~/.local/state/shh/install.log (только последний запуск);
  4. enable_nopasswd: временный sudo без пароля, чтобы сборка из AUR не спрашивала его снова и снова;
  5. distro_prepare: Artix: настройки pacman, репозитории Arch, AUR helper; Void: обновляет xbps и систему;
  6. vmware_clipboard: только в VMware, общий буфер обмена с хостом (Artix; для Void нет пакета). Скрипт: scripts/vmware-clipboard → ~/.local/bin/vmware-clipboard, запускается вместе с sway;
  7. install_packages: пакеты из списков, кроме выключенных частей;
  8. configure_gpu: настройки, нужные драйверу видеокарты;
  9. configure_network: iwd, dhcpcd, DNS;
  10. enable_services: services.txt, служба sing-box, группы; выключает лишние консоли: tty3–tty6, на Artix ещё ttyS;
  11. configure_system: оболочка входа, XDG_RUNTIME_DIR, PC speaker, яркость;
  12. configure_power: poweroff, reboot, сон без пароля;
  13. link_dotfiles: lib/link.sh, режим copy или link из shh config;
  14. leftovers: пакеты выключенных частей, удаляются, только если ответить y.