This is a straight-forward guide for ricing Arch Linux with the Everforest colorscheme theme.
I use a minimal install of Arch Linux on UTM (QEMU virtual machine) on a Macbook Air M1 (2020). This guide should also work with the new Macbook Air M2 and the Pro versions.
Also in the directory asus
you will find configurations for Arch Linux on bare metal. The configurations for your system may vary.
ℹ️ If you already have a running Arch system with the necessary packets installed, you can go to the Quick Ricing section.
Your Arch system should look something like this using my config files:
ℹ️ For help with the installation process watch my video: https://www.youtube.com/watch?v=cOobSmI-XgA&t=399s
Find out which keyboard layout you are using and then set it using loadkeys
:
$ ls /usr/share/kbd/keymaps/**/*.map.gz
$ loadkeys de_CH-latin1
This step is not really necessary, but the Terminus font may appear cleaner than the default one:
$ setfont Lat2-Terminus16
Check the name of the hard disk:
fdisk -l
Use the name (in my case vda) to start the fdisk
partitioning tool:
fdisk /dev/vda
Run the following command:
$ ls /sys/firmware/efi/efivars
If the command shows the directory without error, then the system is booted in UEFI mode. Else you have to use BIOS mode.
Press g to create a new GPT Partition Table.
We will do it according to the example layout of the Arch wiki:
Mount point | Partition | Partition type | Suggested size |
---|---|---|---|
/mnt/boot | /dev/efi_system_partition | uefi | At least 300 MiB |
[SWAP] | /dev/swap_partition | swap | More than 512 MiB |
/mnt | /dev/root_partition | linux | Remainder of device |
- Press n.
- Press Enter to use the default first sector.
- Enter +300M for the last sector.
- Press t and choose 1 and write uefi.
- Press n.
- Press Enter to use the default first sector.
- Enter +512M for the last sector.
- Press t and choose 2 and write swap.
- Press n.
- Press Enter to use the default first sector.
- Enter Enter to use the default last sector.
- Press t and choose 3 and write linux.
After partitioning check if the partitions have been created using fdisk -l
.
$ mkfs.ext4 /dev/root_partition
$ mkswap /dev/swap_partition
$ mkfs.fat -F 32 /dev/efi_system_partition
$ mount /dev/root_partition /mnt
$ mount --mkdir /dev/efi_system_partition /mnt/boot
$ swapon /dev/swap_partition
Press o to create a new GPT Partition Table.
We will do it according to the example layout of the Arch wiki:
Mount point | Partition | Partition type | Suggested size |
---|---|---|---|
[SWAP] | /dev/swap_partition | swap | More than 512 MiB |
/mnt | /dev/root_partition | linux | Remainder of device |
- Press n.
- Press Enter to select the default primary partition type.
- Press Enter to use the default first sector.
- Enter +512M for the last sector.
- Press t and choose 1 and write swap.
- Press n.
- Press Enter to select the default primary partition type.
- Press Enter to use the default first sector.
- Enter Enter to use the default last sector.
- Press t and choose 2 and write linux.
Press a and choose 2 to make the root partition bootable.
After partitioning check if the partitions have been created using fdisk -l
.
$ mkfs.ext4 /dev/root_partition
$ mkswap /dev/swap_partition
$ mount /dev/root_partition /mnt
$ swapon /dev/swap_partition
For a minimal system download and install these packages:
$ pacstrap -K /mnt base base-devel linux linux-firmware e2fsprogs dhcpcd networkmanager sof-firmware git neovim man-db man-pages texinfo
ℹ️ If you are installing Arch Linux on a computer with ARM architecture add the following to the above pacstrap
command:
archlinuxarm-keyring
- Initialize pacman keys and populate them:
pacman-key --init
pacman-key --populate
- Synchronize Arch keyring:
archlinux-keyring-wkd-sync
$ genfstab -U /mnt >> /mnt/etc/fstab
$ arch-chroot /mnt
$ ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
$ hwclock --systohc
Edit /etc/locale.gen and uncomment en_US.UTF-8 UTF-8 and other needed locales. Generate the locales by running:
$ locale-gen
Create /etc/locale.conf and set the LANG variable according to your preferred language:
LANG=de_CH.UTF-8
Create /etc/vconsole.conf and set the following variables according to your preferred language:
KEYMAP=de_CH-latin1
FONT=Lat2-Terminus16
Create /etc/hostname and type any name you wish as your hostname:
arch
Edit /etc/hosts like this:
127.0.0.1 localhost
::1 localhost
127.0.1.1 arch (your host name here!)
$ mkinitcpio -P
Set a new password for root:
$ passwd
Install grub
and efibootmgr
:
$ pacman -S grub efibootmgr
Run the following command:
$ grub-install --efi-directory=/boot --bootloader-id=GRUB
Then create a GRUB config file:
$ grub-mkconfig -o /boot/grub/grub.cfg
Install grub
:
$ pacman -S grub
Check using fdisk -l
to see the name of the disk (not partition!) and run the following command:
$ grub-install /dev/sdX
/dev/sdX could for example stand for /dev/sda (not /dev/sda1!)
Then create a GRUB config file:
$ grub-mkconfig -o /boot/grub/grub.cfg
Exit out of the chroot environment by typing exit
or pressing Ctrl+d.
Unmount all the partitions:
$ umount -R /mnt
Then type poweroff
and remove the installation disk from the virtual machine.
To use pacman you first have to have a working internet connection by enabling NetworkManager:
$ systemctl start NetworkManager
$ systemctl enable NetworkManager
Check if you receive data from the Google Server by running this command:
$ ping 8.8.8.8
First things first: Update the system!
$ pacman -Syu
$ pacman -S sudo
$ useradd -m -g users -G wheel,storage,power,video,audio,input <your username>
$ passwd <your username>
$ EDITOR=nvim visudo
Uncomment the following line:
%wheel ALL=(ALL) NOPASSWD: ALL
You can then login as your newly created user:
$ su <your username>
If you wish to have the default XDG directories (like Downloads, Pictures, Documents etc.) do:
$ sudo pacman -S xdg-user-dirs
$ xdg-user-dirs-update
To install yay:
$ sudo pacman -S git
$ mkdir aur
$ cd aur
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si
This will enhance graphics and improve support for multiple monitors or clipboard sharing.
$ sudo pacman -S spice-vdagent xf86-video-qxl
This will enhance graphics and improve support for multiple monitors or clipboard sharing.
$ sudo pacman -S virtualbox-guest-utils
$ sudo pacman -S pulseaudio
$ sudo pacman -S alsa-utils alsa-plugins
$ sudo pacman -S pavucontrol
PulseAudio Applet:
$ yay -S pa-applet-git
$ sudo pacman -S openssh
$ sudo pacman -S iw wpa_supplicant
NetworkManager Applet:
$ sudo pacman -S network-manager-applet
Enable SSH, DHCP and NM:
$ sudo systemctl enable sshd
$ sudo systemctl enable dhcpcd
$ sudo pacman -S bluez bluez-utils blueman
$ sudo systemctl enable bluetooth
To beautify Pacman use:
$ sudo nvim /etc/pacman.conf
Uncomment Color
and add below it ILoveCandy
.
ℹ️ If you have a good internet connection, you can uncomment the option ParallelDownloads = 5
.
$ sudo systemctl enable fstrim.timer
$ sudo pacman -S ntp
$ sudo systemctl enable ntpd
Then enable NTP:
$ timedatectl set-ntp true
$ sudo pacman -S xorg-server xorg-apps xorg-xinit xclip xdotool xorg-drivers
ℹ️ If there is a NVIDIA GPU in your computer you can run the following command to create automatically a xorg.conf
file in /etc/X11/xorg.conf
.
$ nvidia-xconfig
$ sudo pacman -S i3
After installing X and i3 create a file .xinitrc in your home directory with the following content:
exec i3
This way you can start the X server with the command startx
.
If running outside UMT we need drivers:
Intel:
sudo pacman -S xf86-video-intel xf86-video-qxl intel-media-driver mesa
NVIDIA:
sudo pacman -S xf86-video-nouveau nvidia libva-mesa-driver
$ sudo pacman -S picom
$ sudo pacman -S noto-fonts noto-fonts-emoji ttf-firacode-nerd
To support Asian letters:
$ sudo pacman -S noto-fonts-cjk
$ sudo pacman -S zsh
Change default shell to zsh:
$ chsh -s $(which zsh)
$ sudo pacman -S rxvt-unicode alacritty kitty
The editor should already be installed after running the pacstrap command in the installation process. You can use other editors like nano too.
$ sudo pacman -S neovim
$ sudo pacman -S dmenu rofi
Some additional stuff for rofi:
$ sudo pacman -S rofi-emoji rofi-calc
$ sudo pacman -S polybar
$ sudo pacman -S ranger
For previews we also need feh and Überzug:
$ sudo pacman -S feh ueberzug
$ sudo pacman -S firefox
$ sudo pacman -S vlc
$ sudo pacman -S zathura zathura-pdf-mupdf
Check these amazing wallpapers that harmonize with the Everforest theme: https://github.com/Apeiros-46B/everforest-walls
$ sudo pacman -S tldr fzf tar gzip htop neofetch
- tldr: Commands cheat sheet
- fzf: Fuzzy finder
- tar: Enzipping/Unzipping
- gzip: Enzipping/Unzipping
- htop: CLI task manager
- neofetch: System information
$ sudo pacman -S fd ripgrep bat lsd tree-sitter tree-sitter-cli
- fd: Alternative to find command
- ripgrep: Alternative to grep command
- bat: Alternative to cat command
- lsd: Alternative to ls command
- tree-sitter & tree-sitter-cli: Real syntax highlighting in Neovim
$ sudo pacman -S maim
- maim: Screenshot utiliy
$ sudo pacman -S codespell go luarocks ruby rubygems composer php nodejs npm yarn python python-pip jre-openjdk jdk-openjdk julia wget curl
$ yay -S powershell-bin
These programming languages, protocols or shells are not that important to install if you don't need them. I installed all of them to avoid warnings in the mason.nvim report when running the :checkhealth
command in Neovim.
When done installing the necessary packages, run the reboot
command.
You can either clone the repository and move the files manually to your ~/.config directory or you could use the installer:
$ git clone https://github.com/3rfaan/dotfiles.git ~/Downloads/dotfiles && cd ~/Downloads/dotfiles
Then run the install.sh script:
$ ./install.sh
If you are on VirtualBox, run this command instead:
$ ./install.sh vbox
If you are on UTM (or QEMU), run this command instead:
$ ./install.sh utm
If you want to copy the config files manually you also have to install these packages manually: