Skip to content

MuratovAS/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

В этом репозитории вы найдете мой набор конфигураций sway и artix. Скорее это все одна большая инструкция по сборки системы, подобной моей. Из основных преимуществ своей системы отмечу минималистичность, тривиальность в функционировании. А что касается моей реализации конфига sway, это возможность изменять глобальную цветовую тему и выверенное сочетание компонентов :)

Альтернативный текст

Автор в какой-то момент поплыл кукухой, начал использовать dwl. Информацию можно найти в branch dwl.

Установка Artix (OpenRC) + Sway WM

Для установки системы нам потребуется USB накопитель с предварительно записанным artix linux xfce4. Редакция с графическим интерфейсом упростит дальнейшую работу, позволит использовать буфер обмена и GUI для проверки корректности разметки диска.

После загрузки с USB откроем терминал и перейдем под ROOT

sudo su

Разметка диска

В первую очередь необходимо создать разметку ФС (в нашем случае GPT). Установку системы будем производить на ssd, в качестве корневой системы используем btrfs. Ориентировочная структура разделов:

0. efi     = 512M
1. /       = main
2. swap    = RAM + 1-4Gb
3. free    = 5% disk size

Для создания разметки воспользуемся командой

cfdisk /dev/sda

Форматируем разделы, создаем файл подкачки

mkfs.vfat /dev/sda1

mkswap /dev/sda3 -L "swap" 
swapon /dev/sda3

mkfs.btrfs /dev/sda2
mount /dev/sda2 /mnt
cd /mnt
btrfs subvolume create _active
btrfs subvolume create _active/rootvol
btrfs subvolume create _active/homevol
#btrfs subvolume create _active/docker
#btrfs subvolume create _active/libvirt
btrfs subvolume create _snapshots

Монтируем рабочие разделы

cd ..
umount /mnt
mount -o subvol=_active/rootvol /dev/sda2 /mnt
mkdir /mnt/{home,boot,var}
mkdir /mnt/boot/efi
#mkdir /mnt/var/lib/docker
#mkdir /mnt/var/lib/libvirt
mkdir /mnt/mnt/defvol
mount /dev/sda1 /mnt/boot/efi
#mount -o subvol=_active/docker /dev/sda2 /mnt/var/lib/docker
#mount -o subvol=_active/libvirt /dev/sda2 /mnt/var/lib/libvirt
mount -o subvol=_active/homevol /dev/sda2 /mnt/home
mount -o subvol=/ /dev/sda2 /mnt/mnt/defvol
Альтернативная разметка Данная разметка должна поддерживаться timeshift. Не проверял.

Форматируем разделы, создаем файл подкачки

mkfs.vfat /dev/sda1

mkswap /dev/sda3 -L "swap" 
swapon /dev/sda3

mkfs.btrfs /dev/sda2
mount /dev/sda2 /mnt
cd /mnt
btrfs subvolume create @
btrfs subvolume create @home
btrfs subvolume create @log
btrfs subvolume create @cache

Монтируем рабочие разделы

cd ..
umount /mnt
mount -o subvol=@ /dev/sda2 /mnt
mkdir /mnt/{home,boot,var}
mkdir /mnt/boot/efi
mkdir /mnt/var/cache
mkdir /mnt/var/log
mount /dev/sda1 /mnt/boot/efi
mount -o subvol=/@ /dev/sda2 /mnt/
mount -o subvol=/@home /dev/sda2 /mnt/home
mount -o subvol=/@log /dev/sda2 /mnt/var/log
mount -o subvol=/@cache /dev/sda2 /mnt/var/cache

Установка базовой системы

В качестве системы используем OpenRC, а так же LTS ядро. В качестве системы управления сеансами будет использоваться elogind, можно заменить его на seatd. Стоит отметить seatd не поддерживает polkit, это может стать серьезной проблемой при запуске GUI приложений требующих привилегированного доступа. В таком случае придется запускать GUI приложения от root, что не безопасно и неудобно. В зависимости от архитектуры целевой машины выберите ucode.

basestrap /mnt base base-devel openrc 
# elogind-openrc polkit polkit-qt5 polkit-gnome
# seatd-openrc #NOT support polkit
basestrap /mnt btrfs-progs linux-lts linux-lts-headers linux-firmware

#basestrap /mnt intel-ucode iucode-tool
basestrap /mnt amd-ucode iucode-tool

basestrap /mnt vulkan-radeon radeontop

Создание файла с информацией о разделах

fstabgen -U /mnt >> /mnt/etc/fstab

Настройка базовой системы

Перейдем в корневой каталог будущей нашей системы

artix-chroot /mnt

Конфигурация часового пояса. В данном примере hwclock позволит установить время по аппаратным часам

ln -sf /usr/share/zoneinfo/Asia/ГОРОД /etc/timezone
hwclock --systohc

Установим базовое ПО (необязательно)

pacman -S nano htop

Установим пакеты для управления сетевым соединением

pacman -S dhcpcd dhclient networkmanager networkmanager-openrc

Настройка языковых пакетов

#sed '/en_US\.UTF-8/s/^#//' -i /etc/locale.gen
sed '/ru_RU\.UTF-8/s/^#//' -i /etc/locale.gen
echo "LANG=ru_RU.UTF-8" > /etc/locale.conf
locale-gen

Установка шрифта для tty, необходима для вывода кириллицы.

pacman -S terminus-font
echo -e '\nconsolefont="ter-v20b"' > /etc/conf.d/consolefont
#sudo rc-update add consolefont boot

Определение сетевого имени машины

echo "ИМЯХОСТА" > /etc/hostname
echo "127.0.0.1 localhost" > /etc/hosts
echo "::1       localhost" >> /etc/hosts
echo "127.0.1.1 ИМЯХОСТА.localdomine ИМЯХОСТА" >> /etc/hosts

Настройка репозиториев

Пропишешь в конфигурации pacman новые репозитории. Добавить в /etc/pacman.conf

# Artix
[universe]
Server = https://universe.artixlinux.org/\$arch
Server = https://mirror1.artixlinux.org/universe/\$arch
Server = https://mirror.pascalpuffke.de/artix-universe/\$arch
Server = https://artixlinux.qontinuum.space:4443/artixlinux/universe/os/\$arch
Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch
Server = https://ftp.crifo.org/artix-universe/

Установим поддержку ArchLinux репозиториев и AUR.

pacman -S artix-archlinux-support yay

Пропишешь в конфигурации pacman новые репозитории. Добавить в /etc/pacman.conf

# Arch
[extra]
Include = /etc/pacman.d/mirrorlist-arch

[community]
Include = /etc/pacman.d/mirrorlist-arch

[multilib]
Include = /etc/pacman.d/mirrorlist-arch

Обновим репозитории

pacman -Sy archlinux-keyring artix-keyring
rm -r /etc/pacman.d/gnupg
pacman-key --init
pacman-key --populate archlinux artix
pacman -Scc
pacman -Syyu

Так же данными командами можно исправить ошибку Invalid or corrupted packages (PGP signature)

Установка загрузчика

GRUB

mkinitcpio -p linux-lts
pacman -S grub os-prober efibootmgr grub-btrf
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=grub  --removable
grub-mkconfig -o /boot/grub/grub.cfg

Установка темы

git clone https://github.com/vinceliuice/grub2-themes.git
cd grub2-themes
sudo ./install.sh -b -t tela -i white -s 1080p
cd .. && rm -rf grub2-themes

Настройка пользователя

Не забываем задать пароль root

passwd

Создаем пользователя

useradd -m -G wheel -s /bin/bash ИМЯ
passwd ИМЯ

Отключаем пароль sudo для wheel. А так же отключи запрос пароля для openrc-shutdown это позволит управлять питанием из WM

sed '/%wheel ALL=(ALL:ALL) ALL/s/^#//' -i /etc/sudoers
echo -e '## Same thing without a password\n%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/openrc-shutdown' >> /etc/sudoers
echo -e '%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/rc-service' >> /etc/sudoers
echo -e '%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/libinput' >> /etc/sudoers
#echo -e '%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/VBoxService' >> /etc/sudoers

Hibernation

  1. A swap partition, say /dev/sda...
  2. Add resume to HOOKS in /etc/mkinitcpio.conf
  3. Add resume=/dev/sda... SWAP to GRUB_CMDLINE_LINUX in /etc/default/grub
  4. Re-create initrd and grub.cfg: grub-mkconfig -o /boot/grub/grub.cfg && mkinitcpio -p linux-lts

Example:

GRUB_CMDLINE_LINUX_DEFAULT="apparmor=1 security=apparmor resume=UUID=e862ad16-1d9d-4dde-9a21-50bc7ade0ea2 udev.log_priority=3 quiet"

Вам потребуется UUID его можно подсмотреть в /etc/fstab для вашего swap

Завершение установки базового образа

На данном этапе можно считать установку оконченной. Далее завершаем работу, перезагружаемся в установленную систему.

exit
umount -R /mnt
reboot

Подготовка рабочего окружения

Запустим сервис обеспечивающий авторизацию в системе

#elogind
sudo rc-update add elogind
sudo rc-service elogind start

#нужен для упровления подсветкой
sudo usermod -aG video ИМЯ

#seatd
#sudo rc-update add seatd
#sudo rc-service seatd start
#sudo usermod -aG seat ИМЯ

Пропишем в системный enviroment выбранный в прошлом пункте LM

echo "LIBSEAT_BACKEND=logind" >> /etc/enviroment

Добавим возможность использовать .profile для пользовательских env. А так же возможность добавлять пользовательские бинарные приложения.

echo 'export PATH="$HOME/.local/bin:$PATH"' > /etc/profile.d/home-local-bin.sh
echo -e '# Load profile from home\n[[ -f $HOME/.profile ]] && . $HOME/.profile' >> /etc/profile

Установка Sway

Установим sway и терминал foot Стоит отметить что jq используется в некоторых скриптах WM, по этой причине он внесет список необходимых.

sudo pacman -S foot
sudo pacman -S sway swaybg waybar swayidle mako wl-clipboard wofi
sudo yay -S swaylock-effects-git 

Для функционирования и настройки WM нам потребуются

sudo pacman -S curl jq git

Далее необходимо произвести распаковку ваших или моих dotfiles в домашнюю папку пользователя.

git clone https://github.com/MuratovAS/dotfiles.git
cp -r dotfiles/* ~/ && rm -rf ~/.git ~/design

Установим утилиты xdg, это позволит обеспечить ассоциацию файлов и добавить поддержку ярлыков. Пакет xdg-user-dirs необходим некоторым приложениям для доступа к стандартным каталогом. От него можно отказаться, вручную создав каталоги.

sudo pacman -S xdg-utils xdg-user-dirs
mkdir ~/Share ~/Download ~/Documents ~/Media ~/Templates
xdg-user-dirs-update --set DESKTOP ~/Media
xdg-user-dirs-update --set DOCUMENTS ~/Documents
xdg-user-dirs-update --set DOWNLOAD ~/Download
xdg-user-dirs-update --set MUSIC ~/Media
xdg-user-dirs-update --set PICTURES ~/Media
xdg-user-dirs-update --set PUBLICSHARE ~/Share
xdg-user-dirs-update --set TEMPLATES ~/Templates
xdg-user-dirs-update --set VIDEOS ~/Media

Установка pipewire

Установим pipewire с базовыми дополнениями и TUI менеджер pulsemixer

sudo pacman -S pipewire-alsa pipewire pipewire-jack pipewire-pulse pipewire-media-session pamixer pulsemixer

Поддержка xwayland

Если вам требуется поддержка xorg приложений. Удалить ее будет невозможно!

sudo pacman -S xorg-xwayland
sed '/xwayland/s/^/#\ /' -i ~/.config/sway/config

Поддержка screancast

sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr

Шрифты

sudo pacman -S ttf-nerd-fonts-symbols wqy-microhei ttf-carlito ttf-caladea ttf-liberation ttf-roboto ttf-roboto-mono
yay -S ttf-material-design-icons-webfont 

Обновление кэша шрифтов

fc-cache -f -v
fc-list

Все что может пригодиться на ноутбуке

sudo pacman -S light            # Управляет подсветкой
yay -S poweralertd              # Уведомляет о состоянии питания
sudo pacman -S tlp tlp-openrc   # менеджер питания
yay -S tlpui
sudo rc-service tlp restart
sudo rc-update add tlp 

sudo pacman -S libinput         # Автоматизация клавиш мыши 

sudo pacman -S bluez bluez-utils
sudo pacman -S bluetuith  # TUI bluetooth
#sudo pacman -S blueberry  # GUI bluetooth
sudo usermod -aG rfkill ИМЯ
sudo usermod -aG lp ИМЯ
sudo rc-service bluetoothd restart
sudo rc-update add bluetoothd

Синхронизация времени и даты

Установка chrony, позволит синхронизировать время с NTP сервером

sudo pacman -S chrony chrony-openrc
sudo rc-service chrony restart
sudo rc-update add chrony 

По необходимости можно добавить свой сервер и проверить работоспособность

echo "server ntp.local iburst" >> /etc/chrony.conf
chronyc tracking
chronyc sources

Дополнительные пакеты

Данные пакеты используются в текущей конфигурации sway, но установка не обязательна

sudo pacman -S playerctl                        # Управление медиа плиром из waybar
sudo pacman -S wf-recorder slurp grim swappy    # Инструменты для снимков экрана
yay -S sway-xkb-switcher                        # Позволяет сохранять раскладку каждого окна
yay -S sworkstyle                               # Отображает логотипы приложений открытых в WS
yay -S wlsunset                                 # Ночный режим, фильтр синего цвета
sudo pacman -S khal                             # Календарь
sudo pacman -S gnome-keyring                    # Систума управления ключами (необходима для многих приложений)
khal configure

Менеджеры тем

Большинство приложений реализуют интерфейс по средствам qt и gtk, данный набор пакетов позволяет глобально переключать цветовую гамму приложений

sudo pacman -S qt5-wayland
sudo pacman -S qt5ct kvantum xcursor-breeze
yay -S gtk3-nocsd matcha-gtk-theme kvantum-theme-matcha # (НЕ kvantum-theme-matcha-git)

Возможно вы будите использовать приложения на основе electron. Большинство приложений по умолчанию работают через xwayland, что не очень правильно. Так же это ограничивает разрешения изображения, и на HiDPI мониторе будет выглядеть печально. Данную проблему можно исправить файлом конфигурации, принудительно запускающий wayland версию приложения. В некоторых случаях требуется вручную создать файл для вашей версии electron.

ln -s ~/.config/electron-flags.conf ~/.config/electron12-flags.conf
ln -s ~/.config/electron-flags.conf ~/.config/electron13-flags.conf
ln -s ~/.config/electron-flags.conf ~/.config/electron18-flags.conf

ZSH как альтернатива BASH

Установка zsh

sudo pacman -Syu zsh
chsh -s $(which zsh)

Настройка zsh (выполнять не требуется, если скопировали мой dotfiles)

mv ~/.oh-my-zsh ~/.config/oh-my-zsh
sed -i 's@\.oh-my-zsh@\.config/oh-my-zsh@g' ~/.zshrc
sed -i 's@plugins=(git)@plugins=(git zsh-autosuggestions zsh-syntax-highlighting)@g' ~/.zshrc
sed -i 's@robbyrussell@agnoster@g' ~/.zshrc
sed -i '/mode disabled/s/^#//' ~/.zshrc
sed -i '/ prompt_context/s/^/#\ /' ~/.config/oh-my-zsh/themes/agnoster.zsh-theme
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-.config/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-.config/oh-my-zsh/custom}/plugins/zsh-autosuggestions

Поддержка appimage

По моим предположениям AppImage должен работать из коробки, но встречаются случаи когда приложение не запускается. У меня решилась проблема установкой недостающих компонентов fuse.

sudo pacman -S fuse-common fuse3 fuse2

Немного о ПО

Полезные GUI приложения

sudo pacman -S pamac
sudo pacman -S gnome-disk-utility
sudo pacman -S nautilus
yay -S nautilus-open-any-terminal
sudo pacman -S file-roller
yay -S buttermanager

Полезные TUI приложения

sudo pacman -S micro mc

Набор приложений для просмотра медиа файлов

sudo pacman -S mpv imv zathura f3d
sudo pacman -S zathura-pdf-poppler zathura-djvu
#sudo pacman -S ffmpeg ffmpegthumbnailer

Расширение поддержки устройств и форматов файлов

sudo pacman -S ntfs-3g
sudo pacman -S p7zip unrar
sudo pacman -S gvfs-mtp exfat-utils

Весьма специфичное ПО. В мой конфигурации используется файловый менеджер lf, с возможностью предпросмотр текстовых файлов. Устанавливается так:

sudo pacman -S bat glow chafa
yay -S lf-sixel-git

Что насчет принтера

В случае использования сетевого принтера достаточно установить cups, в случае использования usb принтера смотрите archwiki

sudo pacman -S avahi cups cups-pdf cups-openrc
sudo rc-service cupsd restart
sudo rc-update add cupsd 

Так же распространённый компонент avahi это mdns, вроде бы он используется при подключении к публичным Wifi. Я все же не рекомендую его ставить, это может снижать безопасность системы.

#sudo pacman -S nss-mdns

В случае проблем с доступом к домену *.local, необходимо убрать [NOTFOUND=return] в /etc/nsswitch.conf

Заметки

В процессе вы будите устанавливать приложения не совместимые с OpenRC, вам придется написать свои конфигурации для системы инициализации. В качестве примера можно использовать конфигурации systemd. Найти их можно тут:

/usr/lib/systemd/

Проброс настроек пользователя в root

rm -r /root/.config/mc
ln -s /home/muratovas/.config/mc /root/.config/mc

rm -r /root/.config/micro
ln -s /home/muratovas/.config/micro /root/.config/micro

Проблемы с запуском приложений через wofi

Ярлыки ака. .desktop можно найти в каталоге:

/usr/share/applications/NAME.desktop 
~/.local/share/applications/NAME.desktop 

По умолчанию wofi не умеет запускать терминальные приложения, исправить это можно удалением опции Terminal=true. А так же потребуется указать терминал Exec=foot APP

agetty autologin

/etc/conf.d/agetty.tty1

agetty_options="-J -a ИМЯ"

Disconnect CPU Boost AMD

/etc/init.d/tlp

start()   { echo "passive" > /sys/devices/system/cpu/amd_pstate/status; echo 0 > /sys/devices/system/cpu/cpufreq/boost; /usr/bin/tlp init start; }

Running GUI applications as root

A more versatile —though much less secure— workaround is to use xhost to temporarily allow the root user to access the local user's X session[5]. To do so, execute the following command as the current (unprivileged) user:

xhost si:localuser:root

To remove this access after the application has been closed:

xhost -si:localuser:root

gtk themes

В недавнее время было замечено, что gtk4 не применяет установленную тему через .config/gtk-4.0. Решением было прописывать ее в .profile.

Наблюдаются проблемы с применением темы курсора, решения не нашел.