- Notifications
You must be signed in to change notification settings - Fork3
Мой набор конфигураций для sway/dwl и artix
License
MuratovAS/dotfiles
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
В этом репозитории вы найдете мой набор конфигурацийdwl
иartix (dinit)
. Скорее это все одна большая инструкция по сборки системы, подобной моей.Все необходимые компоненты вы найдете в файлах или в соответствующих репозиториях в моем профиле.
Основные положения:
- Минималистичная система (меньше компонентов = меньше звеньев отказа)
- Простое администрирование (
dinit
,btrfs
) - Нейтральный, единообразный дизайн/стиль
- Атомарность приложений (все пользовательские приложения в
flatpak
) - LUKS
Для установки системы нам потребуется USB накопитель с предварительно записанным artix linux.
После загрузки с USB откроем терминал и перейдем под ROOT
sudo su
В первую очередь необходимо создать разметку ФС (в нашем случаеGPT
).Установку системы будем производить наssd
, в качестве корневой системы используемbtrfs
.Ориентировочная структура разделов:
0. efi = 512M1. lvm = lvm (luks)2. free = 1-5% disk size
Для создания разметки воспользуемся командой
cfdisk /dev/nvme0n1
Форматируем разделы, создаем файл подкачки
cryptsetup --verbose --type luks1 --cipher aes-xts-plain64 --key-size 256 --hash sha256 --iter-time 1000 --use-random --verify-passphrase luksFormat /dev/nvme0n1p2# Are you sure? (Type 'yes' in capital letters): YES# Key slot 0 created.cryptsetup luksOpen /dev/nvme0n1p2 lvm-system# vgdisplayvgcreate lvmSystem /dev/mapper/lvm-systemlvcreate --contiguous y --size 64G lvmSystem --name volSwaplvcreate --contiguous y --extents +100%FREE lvmSystem --name volRoot# lvdisplaymkfs.fat -n ESP -F 32 /dev/nvme0n1p1# OR mkfs.vfat /dev/nvme0n1p1mkswap -L SWAP /dev/lvmSystem/volSwap> tmp.txt# OR mkswap /dev/sda3 -L "swap"mkfs.btrfs /dev/lvmSystem/volRootmount /dev/lvmSystem/volRoot /mntcd /mntbtrfs subvolume create _activebtrfs subvolume create _active/rootvolbtrfs subvolume create _active/homevolbtrfs subvolume create _active/dockerbtrfs subvolume create _active/libvirtbtrfs subvolume create _active/databtrfs subvolume create _active/logbtrfs subvolume create _snapshots
Монтируем рабочие разделы
cd /home/artixumount /mntswapon /dev/lvmSystem/volSwapmount -o subvol=_active/rootvol /dev/lvmSystem/volRoot /mntmkdir /mnt/{home,boot,var}mkdir /mnt/mediamkdir /mnt/media/datamkdir /mnt/boot/efimkdir /mnt/var/logmkdir /mnt/var/lib/dockermkdir /mnt/var/lib/libvirtmkdir /mnt/media/datamkdir /mnt/mnt/defvolmount /dev/nvme0n1p1 /mnt/boot/efimount -o subvol=_active/data /dev/lvmSystem/volRoot /mnt/media/datamount -o subvol=_active/docker /dev/lvmSystem/volRoot /mnt/var/lib/dockermount -o subvol=_active/log /dev/lvmSystem/volRoot /mnt/var/logmount -o subvol=_active/libvirt /dev/lvmSystem/volRoot /mnt/var/lib/libvirtmount -o subvol=_active/homevol /dev/lvmSystem/volRoot /mnt/homemount -o subvol=/ /dev/lvmSystem/volRoot /mnt/mnt/defvol
В качестве системы используемdinit
.В качестве системы управления сеансами будет использоватьсяelogind
, можно заменить его наseatd
. Стоит отметитьseatd
не поддерживаетpolkit
, это может стать серьезной проблемой при запуске GUI приложений требующих привилегированного доступа. В таком случае придется запускать GUI приложения отroot
, что не безопасно и неудобно.В зависимости от архитектуры целевой машины выберитеucode
.
basestrap /mnt base base-devel dinit basestrap /mnt elogind-dinit polkit polkit-qt5 polkit-gnome# OR seatd-dinit #NOT support polkitbasestrap /mnt btrfs-progs linux linux-headers linux-firmwarebasestrap /mnt amd-ucode iucode-tool# OR basestrap /mnt intel-ucode iucode-toolbasestrap /mnt vulkan-radeon radeontop
Создание файла с информацией о разделах
fstabgen -U /mnt>> /mnt/etc/fstab
Перейдем в корневой каталог будущей нашей системы
artix-chroot /mnt
Конфигурация часового пояса.В данном примереhwclock
позволит установить время по аппаратным часам
ln -sf /usr/share/zoneinfo/Asia/ГОРОД /etc/timezonehwclock --systohc
Установим базовое ПО (необязательно)
pacman -S vi nano htop wget
Установим пакеты для управления сетевым соединением
pacman -S dhcpcd dhclient networkmanager networkmanager-dinitdinitctlenable NetworkManager
Настройка языковых пакетов
sed'/en_US\.UTF-8/s/^#//' -i /etc/locale.gensed'/ru_RU\.UTF-8/s/^#//' -i /etc/locale.gen#echo "LANG=ru_RU.UTF-8" > /etc/locale.conflocale-gen
Определение сетевого имени машины
echo"ИМЯХОСТА"> /etc/hostnameecho"127.0.0.1 localhost"> /etc/hostsecho"::1 localhost">> /etc/hosts# echo "127.0.1.1 ИМЯХОСТА.localdomine ИМЯХОСТА" >> /etc/hosts
Установим поддержкуArchLinux
репозиториев и AUR.
pacman -S artix-archlinux-support
Пропишешь в конфигурации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 --initpacman-key --populate archlinux artixpacman -Sccpacman -Syyu
Так же данными командами можно исправить ошибкуInvalid or corrupted packages (PGP signature)
sudo pacman -S gowget https://aur.archlinux.org/cgit/aur.git/snapshot/yay.tar.gztar -xvf yay.tar.gzcd yaymakepkg -i
за hibernation отвечаетresume
pacman -S device-mapper-dinit lvm2-dinit cryptsetup-dinitpacman -S lvm2 cryptsetup glibc mkinitcpiopacman -S openssl openssl-1.1dinitctlenable dmeventddinitctlenable lvm2dinitctlenable cryptsetup
ДобавимHOOK
в/etc/mkinitcpio.conf
HOOKS=( ......... encrypt, lvm2, resume)
mkinitcpio -p linux
pacman -S grub os-prober efibootmgr grub-btrfblkid -s UUID -o value /dev/nvme0n1p1
Редактируем/etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT# GRUB_CMDLINE_LINUX_DEFAULT="cryptdevice=UUID=ИЗ_blkid:lvm-system loglevel=3 quiet resume=UUID=ИЗ_FSTAB_SWAP"GRUB_ENABLE_CRYPTODISK="y"GRUB_COLOR_NORMAL="yellow/black"GRUB_COLOR_HIGHLIGHT="black/yellow"
grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=artix --removable --recheck /dev/nvme0n1
Не забываем задать парольroot
passwd
Создаем пользователя
useradd -m -G wheel -s /bin/bash ИМЯpasswd ИМЯ
Отключаем пароль sudo дляwheel
. А так же отключи запрос пароля дляpoweroff
это позволит управлять питанием из 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/poweroff\n \%wheel ALL=(ALL:ALL) NOPASSWD: /usr/bin/reboot\n \' >> /etc/sudoers
На данном этапе можно считать установку оконченной. Далее завершаем работу, перезагружаемся в установленную систему.
exitumount -R /mntreboot
mkdir -m 700 /etc/cryptsetup-keys.ddd bs=512 count=4 if=/dev/random of=/etc/cryptsetup-keys.d/cryptlvm.key iflag=fullblockchmod 600 /etc/cryptsetup-keys.d/cryptlvm.keycryptsetup -v luksAddKey /dev/sda3 /etc/cryptsetup-keys.d/cryptlvm.key
Добавим в/etc/mkinitcpio.conf
FILES=(/etc/cryptsetup-keys.d/cryptlvm.key)
Добавим в/etc/default/grub
GRUB_CMDLINE_LINUX="... cryptkey=rootfs:/etc/cryptsetup-keys.d/cryptlvm.key"
ОбновимGRUB
иramfs
mkinitcpio -p linuxgrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=artix --removable --recheck /dev/nvme0n1grub-mkconfig -o /boot/grub/grub.cfg
Запустим сервис обеспечивающий авторизацию в системе
#eloginddinitctlenable eloginddinitctl start elogindusermod -aG video ИМЯ#seatd#dinitctl enable seatd#dinitctl start seatd#usermod -aG seat ИМЯ
Пропишем в системныйenviroment
выбранный в прошлом пункте LM
echo"LIBSEAT_BACKEND=logind">> /etc/environment
Добавим возможность использовать.profile
для пользовательскихenv
. А так же возможность добавлять пользовательские бинарные приложения.
echo'export PATH="$HOME/.local/bin:$PATH"'> /etc/profile.d/home-local-bin.shecho -e'# Load profile from home\n[[ -f $HOME/.profile ]] && . $HOME/.profile'>> /etc/profile
Установимdwm
и терминалfoot
Стоит отметить чтоjq
используется в некоторых скриптах WM, по этой причине он внесет список необходимых.
sudo pacman -S foot mako wl-clipboard jq
Для функционирования и настройки WM нам потребуются
sudo pacman -S git pkg-configsudo pacman -S libinput wayland wlroots wayland-protocols libxkbcommon fcft pixman tllistyay -S wbg
Если вам требуется поддержкаxorg
приложений. Удалить ее будет невозможно!
sudo pacman -S xorg-xwayland
Далее необходимо произвести распаковку ваших или моихdotfiles
в домашнюю папку пользователя.
git clone https://github.com/MuratovAS/dotfiles.gitcp -r dotfiles/.*~/&& rm -rf~/.git~/designcd~/.local/src
Установкаzsh
sudo pacman -Syu zshchsh -s$(which zsh)
Настройкаzsh
(выполнять не требуется, если скопировали мой dotfiles)
mv~/.oh-my-zsh~/.config/oh-my-zshsed -i's@\.oh-my-zsh@\.config/oh-my-zsh@g'~/.zshrcsed -i's@plugins=(git)@plugins=(git zsh-autosuggestions zsh-syntax-highlighting)@g'~/.zshrcsed -i's@robbyrussell@agnoster@g'~/.zshrcsed -i'/mode disabled/s/^#//'~/.zshrcsed -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-highlightinggit clone https://github.com/zsh-users/zsh-autosuggestions${ZSH_CUSTOM:-.config/oh-my-zsh/custom}/plugins/zsh-autosuggestions
Установим утилиты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
с базовыми дополнениями и TUI менеджерpulsemixer
sudo pacman -S pipewire-alsa pipewire pipewire-jack pipewire-pulse pipewire-media-session pamixer pulsemixer
sudo pacman -S xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-gtkmkdir .config/xdg-desktop-portal/cp /usr/share/xdg-desktop-portal/gtk-portals.conf .config/xdg-desktop-portal/portals.conf
sudo pacman -S wqy-microhei ttf-dejavu ttf-roboto ttf-roboto-mono#systemsudo pacman -S ttf-carlito ttf-caladea ttf-liberation#base textsudo pacman -S ttf-nerd-fonts-symbols#iconsudo pacman -S ttf-font-awesome#emoji
Обновление кэша шрифтов
fc-cache -f -v#fc-list
Установкаchrony
, позволит синхронизировать время с NTP сервером
sudo pacman -S chrony chrony-dinitsudo dinitctlenable chrony
По моим предположениям AppImage должен работать из коробки, но встречаются случаи когда приложение не запускается. У меня решилась проблема установкой недостающих компонентовfuse
.
sudo pacman -S fuse-common fuse3 fuse2
sudo pacman -S tlp tlp-dinit# менеджер питанияsudo dinitctlenable tlp#yay -S tlpuiyay -S poweralertd# Уведомляет о состоянии питанияsudo pacman -S bluez bluez-utils bluez-dinitsudo yay -S bluetuith-bin# TUI bluetoothsudo usermod -aG rfkill ИМЯsudo usermod -aG lp ИМЯsudo dinitctlenable bluetoothdyay -S light# Управляет подсветкой
Данные пакеты используются в текущей конфигурацииdwl
, но установка не обязательна
sudo pacman -S playerctl# Управление медиа плиром из waybarsudo pacman -S wf-recordersudo pacman -S slurp grim swappy# Инструменты для снимков экранаsudo pacman -S wlsunset# Ночный режим, фильтр синего цветаsudo pacman -S khal# Календарьsudo pacman -S gnome-keyring# Систума управления ключами (необходима для многих приложений)khal configure
sudo pacman -S flatpak flatpak-builderflatpak install flathub com.github.tchx84.Flatseal
sudo pacman -S xcursor-breezeyay -S matcha-gtk-theme
Большинство приложений по умолчанию работают черезxwayland
, что не очень правильно. Так же это ограничивает разрешения изображения, и на HiDPI мониторе будет выглядеть печально. Данную проблему можно исправить файлом конфигурации, принудительно запускающийwayland
версию приложения. В некоторых случаях требуется вручную создать файл для вашей версииelectron
.
ln -s~/.config/electron-flags.conf~/.config/electron12-flags.confln -s~/.config/electron-flags.conf~/.config/electron13-flags.confln -s~/.config/electron-flags.conf~/.config/electron18-flags.conf
cp /etc/dinit.d/config/agetty-default.conf /etc/dinit.d/config/agetty-tty1.conf
Содержание/etc/dinit.d/config/agetty-tty1.conf
# DO NOT REMOVE THIS FILE!# Note: You can copy and rename this file to the name of the tty you# want (e.g.: /etc/dinit.d/config/agetty-tty1.conf will make a# configuration specific to tty1) GETTY_BAUD=38400 GETTY_TERM=linux GETTY_ARGS="-J -a ИМЯ"
Содержание/etc/dinit.d/legion
type = scriptedcommand = /bin/sh -c "echo 'passive' > /sys/devices/system/cpu/amd_pstate/status; echo 0 > /sys/devices/system/cpu/cpufreq/boost;"start-timeout = 5before = tty1.target
cd /etc/dinit.d/boot.d/sudo ln -s ../legion legionsudo dinitctlenable legion
Полезные GUI приложения
sudo pacman -S pamacsudo pacman -S seahorsesudo pacman -S gnome-disk-utilitysudo pacman -S nautilussudo pacman -S file-rolleryay -S buttermanageryay -S gnome-calculator-gtk3sudo pacman -S librewolf
Полезные TUI приложения
sudo pacman -S micro mc fzf neofetchsudo pacman -S bat glow chafasudo pacman -S pass cmussudo pacman -S netcat
Набор приложений для просмотра медиа файлов
sudo pacman -S mpv imv zathurasudo pacman -S zathura-pdf-poppler zathura-djvusudo pacman -S ffmpeg ffmpegthumbnailer#sudo pacman -S f3d
Расширение поддержки устройств и форматов файлов
sudo pacman -S exfat-utilsyay -S ntfsprogs-ntfs3sudo pacman -S p7zip unrarsudo pacman -S gvfs-mtp
Пользовательские приложения
flatpak install flathub org.gnome.Evolutionflatpak install flathub org.gnome.Evinceflatpak install flathub org.libreoffice.LibreOfficeflatpak install flathub com.github.marktext.marktextflatpak install flathub com.jgraph.drawio.desktopflatpak install flathub io.github.f3d_app.f3dflatpak install flathub org.telegram.desktopflatpak install flathub com.jeffser.Alpacaflatpak install flathub com.github.Murmele.Gittyupflatpak install flathub io.github.flattool.Warehousesudo pacman -S kdeconnectsudo pacman -S tailscalesudo pacman -S tailscale-dinit sudo dinitctlenable tailscaledyay -S trayscale
sudo pacman -S docker docker-compose docker-dinitsudo dinitctl start dockerdsudo usermod -aG docker$USERyay -S lazydocker
sudo pacman -S dmidecode virt-manager virt-viewer qemu edk2-ovmf vde2 dnsmasq bridge-utils libvirt-dinit #qemu-fullsudo usermod -a -G libvirt $(whoami)sudo chown -R libvirt-qemu:libvirt-qemu /var/lib/libvirt
cp -r /usr/share/themes/ .themes/cp -r /usr/share/icons/ .icons/ flatpak install flathub org.gtk.Gtk3theme.Breeze
Так же следует добавитьenv
для всехflatpak
приложений
GTK_THEME=Matcha-dark-seaICON_THEME=AdwaitaLegacy
Подробнее:Flatpak documentation they are blacklisted.Apply GTK System Themes on Flatpak Apps in Linux
10 Linux cryptsetup Examples for LUKS Key Management (How to Add, Remove, Change, Reset LUKS encryption Key)Artix Linux. Установка с полным/частичным шифрованием; Хабр
About
Мой набор конфигураций для sway/dwl и artix