Below described installation process for a new system. Instructions given suppose no systemd, focus on OpenRC and rely on chezmoi. Targeting Artix or secondly Gentoo
First install the system:
Follow https://wiki.artixlinux.org/Main/Installation
Note that artix-live will have NetworkManager running. You can see in rc-status. So you might want to use on Wi-Fi:
nmcli dev wifi list
nmcli dev wifi connect "name" password "pass"
# or better
nmcli dev wifi connect "name" --askSo no /etc/wpa_supplicant/ required like you could use with netifrc. And you don't need to install dhcpcd or wpa_supplicant with NetworkManager too
See connections: /etc/NetworkManager/system-connections/
Applicable for Gentoo net-misc/networkmanager
chrony must be already running
Please set reasonable /etc/hostname or you will need later:
rm -rf ~/.config/chromium/Singleton*It will help you to use Deskflow
So if you chose it then inside the chroot install it:
pacman -S networkmanager-openrc
rc-update add NetworkManager defaultThen out of the chroot you can reuse connection:
cp /etc/NetworkManager/system-connections/* /mnt/etc/NetworkManager/system-connections/Note that Gentoo can have different interface-name when Artix -> Gentoo chroot installing
You can install sshd to continue from another machine after reboot:
pacman -S openssh-openrc
vim /etc/ssh/sshd_config
rc-update add sshd default
rc-service sshd startFrom second machine: ssh-copy-id hostname
You might want to run visudo
Add groups if needed: usermod -aG wheel <user>
Follow the handbook: https://wiki.gentoo.org/wiki/Handbook:AMD64
You can chroot from Artix. Refer to Artix NetworkManager section
- Turn off your laptop
- Hold down the Fn key and the Left Alt key simultaneously
- While keeping them held down, press the Power button once
- The moment the Acer logo flashes, start smashing the F2 key (or F12).
You might want Main/F12 Boot Menu/[Enabled]
- Flip the laptop and hold paperclip in a pinhole with a battery icon for 15-30 seconds, or more than 30 seconds
- Wait for 5 minutes to remove residual energy
Add needed groups:
usermod -aG video $USER
usermod -aG audio $USERCheck docs: https://wiki.gentoo.org/wiki/Intel
sudo pacman -S intel-media-driver vulkan-intel
# old hardware
sudo pacman -S libva-intel-driver
sudo pacman -S xf86-video-intel
sudo pacman -S xf86-video-fbdev
sudo pacman -S intel-compute-runtime# fonts. You may want for PS1 return icons. And the last is needed for polybar
sudo pacman -S noto-fonts-emoji noto-fonts-cjk otf-comicshanns-nerd
sudo pacman -S git figlet fortune-mod bash-completion jq yazi ncdu ouch w3m imagemagick rsync fzf
# xorg. Includes i3 keybinds. acpilight -> xbacklight but not xrandr
sudo pacman -S xorg-server xorg-xinit i3-wm polybar rofi picom feh scrot xdotool kitty xclip gvim acpilight playerctl xsettingsd xorg-xev
# web browser
sudo pacman -S ungoogled-chromium
# or
sudo pacman -S chromium
# other utils
sudo pacman -S graphviz tmux perl-image-exiftool
# video player
vlc vlc-plugin-x264 vlc-plugin-ffmpeg
# video recording
sudo pacman -S obs-studio
# video editing
sudo pacman -S kdenlive
# might be too old. Replace
sudo pacman -S net-tools
# localization
sudo pacman -S hunspell-en_us hunspell-ru
# java runtime
sudo pacman -S jre-openjdk
# vim COC bash
sudo pacman -S shellcheck-binsudo pacman -S python-gobject
sudo pacman -S power-profiles-daemon-openrc
sudo rc-update add power-profiles-daemon default
sudo rc-service power-profiles-daemon start
powerprofilesctl list
powerprofilesctl set power-saverMight be good for AMD to use amd-pstate-ut
sudo pacman -S pipewire-openrc pipewire-pulse-openrc wireplumber-openrc bluez-openrc bluez-utils sof-firmware pavucontrol
sudo rc-update add bluetoothd default
sudo rc-service bluetoothd start
# user services. No sudo
rc-update add -U pipewire default
rc-update add -U pipewire-pulse default
rc-update add -U wireplumber default
rc-service --user wireplumber start
# rc-service --user pipewire start
rc-service --user pipewire-pulse start
rc-status -U
pactl list sinkssudo pacman -S rustup
rustup default stablecargo install gitui --lockedsudo pacman -S go
go install github.com/charmbracelet/glow/v2@latest
# extra/shfmt. For vim ALE bash
go install mvdan.cc/sh/v3/cmd/shfmt@latestsudo pacman -S make cmake cppcheck astylesudo emerge --ask --quiet --verbose dev-util/cppcheck dev-util/astyle# openblas essential for all system
sudo pacman -S blas-openblas python-numpy
# good to have global
sudo pacman -S python-ruff ruffsudo mkdir -p /etc/portage/env
sudo vim /etc/portage/env/o3COMMON_FLAGS="-O3 -pipe -march=native"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
FCFLAGS="${COMMON_FLAGS}"
FFLAGS="${COMMON_FLAGS}"sudo mkdir -p /etc/portage/package.env
sudo vim /etc/portage/package.env/o3sci-libs/openblas o3
dev-python/numpy o3
sci-libs/lapack o3sudo emerge --ask --quiet --verbose sci-libs/openblas dev-python/numpyFor other Python packages check repository Makefiles. Most of them provide make pacman
For distinctive kernels from other distros edit /etc/grub.d/30_os-prober around menuentry:
title="${LLABEL} $LKERNEL $onstr"Edit /etc/default/grub
# remember last choice
GRUB_DEFAULT="saved"
# infinite timeout
GRUB_TIMEOUT=-1
# AMD optional `amd_pstate_ut=active`
# for lowmem only, if swap: `zswap.enabled=1 zswap.max_pool_percent=50`. Not recommended
# not working touchscreen: `usbcore.quirks=2386:3125:bk`. See https://gist.github.com/ulcuber/1a1da7886b8501ee724220750069a3ed
GRUB_CMDLINE_LINUX_DEFAULT=""
# usually it comes with theme
GRUB_THEME="/boot/grub/themes/starfield/theme.txt"
# to see all boot entries without nested menus
GRUB_DISABLE_SUBMENU=y
# detect other OSes
GRUB_DISABLE_OS_PROBER=falseThen make new config:
sudo grub-mkconfig -o /boot/grub/grub.cfgssh-keygen
cat ~/.ssh/id_ed25519.pubAdd machine public key to https://github.com/settings/ssh/new
lsblk -f
sudo vim /etc/fstabDownload chezmoi
export GITHUB_USERNAME=
sh -c "$(curl -fsLS https://get.chezmoi.io)" -- -b $HOME/.local/bin init git@github.com:$GITHUB_USERNAME/dotfiles.gitFill ~/.config/chezmoi/chezmoi.yaml data. You might need:
ls /sys/class/power_supply
ls /sys/class/backlight
sensorsThen ~/.local/bin/chezmoi apply
To run i3 init theme files
~/.config/xsettingsd/set-theme <name>
~/.config/xsettingsd/set-color-scheme lightNote that these are the main scripts that trigger other theme and color-scheme
For example, rofi, xrdb, kitty have the same scripts that manage their own symlinks
Xsettingsd composes all these scripts
Add to ~/.bashrc:
if [ -f ~/.bashrc_common ]; then
. ~/.bashrc_common
fiThe local .bashrc will be private for system specific vars like:
export BROWSER='/usr/bin/chromium'
. /usr/share/nvm/init-nvm.sh
export BUN_INSTALL="$HOME/.bun"
export PATH="$BUN_INSTALL/bin:$PATH"# from chezmoi
cd ~/.config/etc-backup/
# needs packages to install their configs
# Repeat for new packages
# Does not override existing configs
make installsudo mkdir /var/log/$USER
sudo chown $USER:$USER /var/log/$USER
sudo usermod -aG input $USER
sudo groupadd uinput
sudo usermod -aG uinput $USER
sudo rc-update add kmonad default
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo modprobe uinput
# install kmonad itself too
sudo rc-service kmonad start
sudo rc-service kmonad statussudo pacman -S php-fpm php-fpm-openrc php-pgsql php-apcu php-imagick php-redis php-sqlite
cd /usr/bin
sudo ln -s php php8.5Check latest instruction https://getcomposer.org/download/
composer global require laravel/installercurl -fL --output /tmp/pie.phar https://github.com/php/pie/releases/latest/download/pie.phar
# get hash: https://github.com/php/pie/releases
# no `sha256:` prefix
PIE_HASH="e8d27c100e85720f374a55f79d63fa8d686dedabc9ccbc6567085e0baf646d55"
echo "$PIE_HASH /tmp/pie.phar" | sha256sum --check
sudo mv /tmp/pie.phar /usr/local/bin/pie
sudo chmod u+x /usr/local/bin/pie
pie install swoole/swoole# uncomment extensions: bcmath curl iconv intl mysqli pdo_mysql pdo_pgsql pdo_sqlite pgsql sockets sodium sqlite3 zip
sudo vim /etc/php/php.ini
sudo vim /etc/php/php-fpm.d/www.conf
sudo rc-service php-fpm startsudo pacman -S mariadb mariadb-openrc
sudo mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo vim ~/.my.cnf
sudo rc-service mysql startsudo pacman -S nginx nginx-openrc
sudo vim /etc/nginx/nginx.conf
sudo nginx -t
sudo vim /etc/hostssudo pacman -S valkey redis-openrcsudo vim /etc/valkey/valkey.conf:
unixsocket /run/valkey/valkey.sock
unixsocketperm 755sudo mkdir /run/valkey
sudo chown valkey:wheel /run/valkey
sudo vim /etc/init.d/redis: redis to valkey
sudo vim /etc/php/conf.d/redis.ini
sudo rc-service redis startSee: https://gist.github.com/ulcuber/ea20e10fa961721afb94e7552ec9992b
sudo rc-update -s add default mysql
sudo rc-update add php-fpm mysql
sudo rc-update add mysql mysql
sudo rc-update add redis mysql
sudo rc-update add nginx mysqlsudo pacman -S nvm unzipSee: https://github.com/nvm-sh/nvm
curl -fsSL https://bun.sh/install | bashYou may want a workaround for vim ALE:
ln -sf ~/.nvm/versions/node/v24.16.0/bin/node ~/.local/bin/node# for vim COC bash
bun add -g bash-language-server
# for vim ALE markdown
bun add -g textlint textlint-rule-write-good @textlint-rule/textlint-rule-preset-google textlint-rule-terminology textlint-rule-spellcheck-tech-wordWith bun and node you can run :PlugInstall!
mkdir -p ~/git-repos/cpp
git clone git@github.com:sergei-mironov/xkb-switch.git ~/git-repos/cpp/xkb-switch
cd ~/git-repos/cpp/xkb-switch
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfigmkdir -p ~/git-repos/awk
git clone git@github.com:soimort/translate-shell.git ~/git-repos/awk/translate-shell
cd ~/git-repos/awk/translate-shell
make
sudo make installmkdir -p ~/git-repos/c
git clone git@github.com:ulcuber/snote.git ~/git-repos/c/snote
sudo pacman -S libx11 libxext libxft fontconfig freetype2
cd ~/git-repos/c/snote
make
make installPortage upstream for media-gfx/fbgrab
mkdir -p ~/git-repos/c
git clone git@github.com:GunnarMonell/fbgrab.git ~/git-repos/c/fbgrab
cd ~/git-repos/c/fbgrab
make
sudo make install- https://packages.gentoo.org/packages/app-i18n/fbterm
- https://aur.archlinux.org/packages/fbterm has patches to https://salsa.debian.org/debian/fbterm
Portage upstream for media-gfx/fbgrab is too old for Artix. So using its fork
mkdir -p ~/git-repos/forks
git clone git@github.com:ulcuber/fbterm.git ~/git-repos/forks/fbterm
cd ~/git-repos/forks/fbterm
autoreconf -vfi
./configure --prefix=/usr
make
sudo make install
sudo setcap cap_sys_tty_config+ep /usr/bin/fbtermsudo pacman -S ninja meson poppler-glib
mkdir -p ~/git-repos/c
git clone git@gitlab.com:kraxel/fbida.git ~/git-repos/c/fbida
cd ~/git-repos/c/fbida
make
cp build-meson-aspire/fbi ~/.local/bin/- Neofetch
sudo pacman -S terminus-fontsudo emerge --ask media-fonts/terminus-fontSee: https://wiki.gentoo.org/wiki/Fonts/Console
Check available fonts in:
- Gentoo:
/usr/share/consolefonts - Artix:
/usr/share/kbd/consolefonts/ter-*
Try in TTY: setfont ter-c32n
If font fits then apply it globally in /etc/conf.d/consolefont:
consolefont="ter-c32n"If everything is OK add to runlevel:
sudo rc-update add consolefont boot- Check custom
/usr/local/bin - Copy your
~/.local/share/fonts batteryandpower_nowutilsbash-scripts