-
Default is US (No need to loadkeys)
Change console font & size:
setfont ter-dXXb
Fonts are stored in
/usr/share/kbd/consolefonts/
-
To verify the boot mode, check the UEFI bitness:
cat /sys/firmware/efi/fw_platform_size
It will return
64for a 64-bit (x64) UEFI or32for a 32-bit (IA32) UEFI.If it returns
No such file or directory, the system may be booted in BIOS (or CSM) mode.
-
Ensure network interface:
ip link
For wireless connection:
iwctl
Verify connection:
ping archlinux.org
-
timedatectl set-ntp trueCheck status:
timedatectl status
-
Partitioning using
cfdisk:- 300M for boot is enough as EFI System
- 2G for swap as Linux swap
- Remaining space for the root as Linux filesystem
-
mkfs.ext4 /dev/root_partition mkswap /dev/swap_partition
Only format the ESP if you created now. In other words, if you are dual-booting, DO NOT format the EFI system partition.
mkfs.fat -F 32 /dev/efi_system_partition
-
mount /dev/root_partition /mnt swapon /dev/swap_partition mount --mkdir /dev/efi_system_partition /mnt/boot
-
Synchronize package databases:
pacman -Syy
-
pacstrap -K /mnt base linux-lts linux-firmware linux-lts-headers intel-ucode
-
genfstab -U /mnt >> /mnt/etc/fstab -
arch-chroot /mnt
Set font permanently:
echo FONT=ter-dXXb >> /etc/vconsole.conf
Install headless base packages (Display server agnostic):
gvim vi nano sudo opendoas base-devel terminus-font git wget man-db man-pages networkmanager traceroute iproute2 openresolv bash-completion texinfo dialog dhcpcd wpa_supplicant ifplugd iw bind alsa-utils libinput bluez bluez-utils xdg-utils xdg-user-dirs gvfs gvfs-mtp android-udev grub efibootmgr dosfstools mtools ntfs-3g os-prober -
ln -sf /usr/share/zoneinfo/<Region>/<City> /etc/localtime
In my case:
ln -sf /usr/share/zoneinfo/Asia/Tehran /etc/localtimehwclock --systohc
-
Uncomment relevant lines in
/etc/locale.gen:en_US.UTF-8 UTF-8 en_US ISO-XXXX-X fa_IR UTF-8And save the file.
echo LANG=en_US.UTF-8 >> /etc/locale.conf locale-gen
-
echo <myhostname> > /etc/hostname
Paste these lines in
/etc/hosts:127.0.0.1 localhost ::1 localhost 127.0.1.1 <myhostname>.localdomain <myhostname> -
passwd
-
useradd -m -g users -G wheel <username>
To give user the admin privileges, uncomment the line
#%wheel ALL=(ALL:ALL) ALLin the sudoers:EDITOR=nano visudo
Set password for the user:
passwd <username>
-
Paste this line in
/etc/doas.conf:permit :wheelThe configuration file must end with a newline
Change owner, group and permissions:
chown -c root:root /etc/doas.conf chmod -c 0400 /etc/doas.conf
-
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
Make sure os-porber is not disabled in
/etc/default/grubMake GRUB config file:
grub-mkconfig -o /boot/grub/grub.cfg
-
Regenerate kernel, exit chroot, unmount all and reboot:
mkinitcpio -P exit umount -R /mnt reboot
-
To configure the NetworkManager to use resolvconf, paste these lines inside
/etc/NetworkManager/conf.d/rc-manager.conf:[main] rc-manager=resolvconf
Add DNS servers in
/etc/resolvconf.conflike below:name_servers="8.8.8.8 1.1.1.1"
Force resolvconf to update all its subscribers:
sudo resolvconf -u
-
sudo systemctl enable --now NetworkManagerFor Wi-Fi, activate connection with:
nmtui
-
cd /opt sudo git clone https://aur.archlinux.org/yay-bin.git sudo chown -R <username>:users ./yay-bin cd yay-bin makepkg -si
-
To unloade the pcspkr kernel module, paste line below in
/etc/modprobe.d/nobeep.conf:blacklist pcspkr
Regenrate kernel:
sudo mkinitcpio -P
-
sudo mkdir /opt/{softwares,sources} sudo chown -R <username>:users /opt/{softwares,sources} sudo mkdir /mnt/{windows,iso} -
For more details configurations, refer to the Arch Wiki.
Apply these configurations and installations for either environment
-
Fonts & Shared Apps
ttf-dejavu ttf-firacode-nerd ttf-hack-nerd ttf-intone-nerd ttf-font-awesome ttf-ubuntu-nerd noto-fonts noto-fonts-emoji firefox alacritty fish zsh lf tmux zathura papers nemo gedit gedit-plugins aria2 amberol vlc duf htop btop persepolis psensor lm_sensors ffmpegthumbnailer gnome-clocks zoxide bat ncdu tree tealdeer gparted meld eza locate vulkan-intelAUR packages:
google-chrome visual-studio-code-bin cloudflare-warp-bin localsend-bin gtkhash zotero-binManual installations:
Install st, Telegram, and TexLive after booting into a graphical session.
-
Pacman Configuration
Optimize Pacman by editing
/etc/pacman.conffile. Uncomment theColoroption for colored output and setParallelDownloadsto2for faster package downloads.
-
Install X11 Display Server & Audio
# Display server, input tools, and PulseAudio (Legacy/X11 audio) xorg xorg-xinit xorg-xrandr xorg-xsetroot xclip xbanish pulseaudio pulseaudio-alsa pulseaudio-bluetooth -
Install
bspwm(window manager) and essential toolsbspwm sxhkd picom polybar nitrogen rofi dunst arandr mpd polkit-gnome -
Dotfiles & Config-
Copy configuration files from dotfiles to the appropriate locations:
git clone https://github.com/ackreq/dotfiles.git cd dotfiles cp -r config/* ~/.config/ cp -r .local/ ~/ cp -r .* ~/ # Make configs executable chmod +x ~/.config/bspwm/bspwm chmod +x ~/.config/sxhkd/* chmod +x ~/.config/polybar/nova/scripts/*
-
Configure Touchpad (X11 specific)
Paste these line in
/etc/X11/xorg.conf.d/30-touchpad.conf:Section "InputClass" Identifier "Touchpad" Driver "libinput" Option "Tapping" "on" Option "NaturalScrolling" "true" EndSection
-
Install Niri (Wayland Compositor)
Follow the official niri documentation for installation instructions.
-
Install Sound Server
pipewire wireplumber pipewire-pulse pipewire-alsa
-
Choose a Desktop Shell
Choose either DMS or Noctalia shell and install your preferred one.
-
Install Essential Wayland Tools
fuzzel mutagen brightnessctl qt6ct qt5ct nwg-look adw-gtk-theme
- For Qt6CT and Qt5CT set Color scheme to
mutagenand for nwg-look set style toadw-gtk3-dark - Download your preferred icon pack and set it for GTK and Qt.
- For Qt6CT and Qt5CT set Color scheme to