Git Product home page Git Product logo

arch-everforest's Introduction

Arch Linux Install & Everforest Ricing

Logo

This is a full installation and customization guide for Arch Linux. This updated guide uses Wayland instead of X11. The theme is based off the Everforest color scheme from sainnhe.

ℹ️ If you already have a running Arch system with the necessary packets installed, you can go to the Quick Ricing section.

Preview

arch-everforest_short.mp4

Preview

⚠️ Caution: If you are installing Arch on a virtual machine you won't have the blur effect like in the image above because there is no hardware acceleration.

Arch Installation Guide

Download ISO image

Go to the download page of the official Arch Linux webpage and download the ISO image from one of the mirrors: https://archlinux.org/download/.

Prepare an installation medium

Check this Arch Wiki article to prepare an installation medium, e.g. a USB flash drive or an optical disc: https://wiki.archlinux.org/title/installation_guide#Prepare_an_installation_medium

Console keyboard layout

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

Connect to the web

To connect to the web we use iwctl:

To start iwctl run the following command:

iwctl

We can then look for the device name:

[iwd]# device list

Then we can use the device name to scan for networks (Note: This command won't output anything!):

[iwd]# station <device-name> scan

Now we can list all available networks:

[iwd]# station <device-name> get-networks

Finally, we connect to a network:

[iwd]# station <device-name> connect <SSID>

Check if you successfully established a connection by pinging the Google server:

ping 8.8.8.8

Set root password so you can complete installation via ssh on a working system passwd

Console font

This step is not really necessary, but the Terminus font may appear cleaner than the default one:

setfont Lat2-Terminus16

Partitioning

UEFI or BIOS?

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.

Check the name of the hard disk:

fdisk -l

Use the name (in my case sda) to start the fdisk partitioning tool:

fdisk /dev/sda

UEFI with GPT

Press g to create a new GUID Partition Table (GPT).

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
Create boot partition
  1. Press n.
  2. Press Enter to select the default partition number.
  3. Press Enter to use the default first sector.
  4. Enter +300M for the last sector.
  5. Press t and choose 1 and write uefi.
Create swap partition
  1. Press n.
  2. Press Enter to select the default partition number.
  3. Press Enter to use the default first sector.
  4. Enter +512M for the last sector.
  5. Press t and choose 2 and write swap.
Create root partition
  1. Press n.
  2. Press Enter to select the default partition number.
  3. Press Enter to use the default first sector.
  4. Enter Enter to use the default last sector.
  5. Press t and choose 3 and write linux.

⚠️\ When you are done partitioning don't forget to press w to save the changes!

After partitioning check if the partitions have been created using fdisk -l.

Partition formatting
mkfs.ext4 /dev/sda3
mkswap /dev/sda2
mkfs.fat -F 32 /dev/sda1
Mounting the file system
mount /dev/sda3 /mnt
mount --mkdir /dev/sda1 /mnt/boot
swapon /dev/sda2

BIOS with MBR

Press o to create a new MBR 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
Create swap partition
  1. Press n.
  2. Press Enter to select the default partition number.
  3. Press Enter to select the default primary partition type.
  4. Press Enter to use the default first sector.
  5. Enter +512M for the last sector.
  6. Press t and choose 1 and write swap.
Create root partition
  1. Press n.
  2. Press Enter to select the default partition number.
  3. Press Enter to select the default primary partition type.
  4. Press Enter to use the default first sector.
  5. Enter Enter to use the default last sector.
  6. Press t and choose 2 and write linux.
Make partition bootable

Press a and choose 2 to make the root partition bootable.

⚠️\ When you are done partitioning don't forget to press w to save the changes!

After partitioning check if the partitions have been created using fdisk -l.

Partition formatting
mkfs.ext4 /dev/<root_partition>
mkswap /dev/<swap_partition>
Mounting the file system
mount /dev/<root_partition> /mnt
swapon /dev/<swap_partition>

Package install

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

⚠️ If you get errors due to key then do the following:

  1. Initialize pacman keys and populate them:
pacman-key --init
pacman-key --populate
  1. Synchronize Arch keyring:
archlinux-keyring-wkd-sync

Last steps

Generate fstab file

genfstab -U /mnt >> /mnt/etc/fstab

Change root into new system

arch-chroot /mnt

Set time zone

ln -sf /usr/share/zoneinfo/Region/City /etc/localtime
hwclock --systohc

Localization

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

Network configurations

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!)

Initramfs

mkinitcpio -P

Root password

Set a new password for root:

passwd

Bootloader

UEFI

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
BIOS

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

Final step

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.

System-related Configurations

Enable network connection

To use pacman you first have to have a working internet connection by enabling NetworkManager:

systemctl start NetworkManager
systemctl enable NetworkManager

Now we can connect to the web using NetworkManager:

First, we list all nearby Wi-Fi networks:

nmcli device wifi list

We can then connect to a network:

nmcli device wifi connect <SSID> password <password>

Check if you receive data from the Google Server by running this command:

ping 8.8.8.8

Update the system

First things first: Update the system!

pacman -Syu

sudo Command

Install the sudo command:

pacman -S sudo

Add your personal user account

useradd -m -g users -G wheel,storage,power,video,audio,input <your username>
passwd <your username>

Grant root access to our user

EDITOR=nvim visudo

Uncomment the following line in order to use the sudo command without password prompt:

%wheel ALL=(ALL) NOPASSWD: ALL

You can then log in 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

Install AUR package manager

To install yay:

cd $HOME && mkdir aur
cd aur
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Guest tools

SPICE support on guest (for UTM)

This will enhance graphics and improve support for multiple monitors or clipboard sharing.

sudo pacman -S spice-vdagent xf86-video-qxl

Guest additions (for VirtualBox)

This will enhance graphics and improve support for multiple monitors or clipboard sharing.

sudo pacman -S virtualbox-guest-utils

Sound

sudo pacman -S alsa-utils alsa-plugins pipewire pipewire-alsa pipewire-pulse wireplumber

Network

sudo pacman -S openssh iw wpa_supplicant

Enable SSH, DHCP:

sudo systemctl enable sshd dhcpcd

Bluetooth

sudo pacman -S bluez bluez-utils blueman && sudo systemctl enable bluetooth

Pacman

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.

Enable SSD Trim

sudo systemctl enable fstrim.timer

Enable Time Synchronization

sudo pacman -S ntp
sudo systemctl enable ntpd

Then enable NTP:

timedatectl set-ntp true

Graphical User Interface (GUI) Settings

Wayland

sudo pacman -S hyprland hyprpaper swayidle
yay -S wlogout swaylock-effects-git
  • hyprland: A compositor for Wayland

  • hyprpaper: Set wallpaper in Hyprland

  • swayidle: DPMS, turning screen off after timeout period

  • wlogout: Menu for logging out, rebooting, shutting down, etc

  • swaylock-effects-git: Lockscreen

⚠️ Caution: If you don't have an NVIDIA graphics card you have to delete the environment variables concerning NVIDIA in ~/.config/hyprland/hyprland.conf later when configuring the system!

Drivers

Intel:

sudo pacman -S mesa intel-media-driver libva-intel-driver vulkan-intel

NVIDIA:

sudo pacman -S nvidia

Fonts

sudo pacman -S noto-fonts ttf-opensans ttf-firacode-nerd

Emojis:

sudo pacman -S noto-fonts-emoji

To support Asian letters:

sudo pacman -S noto-fonts-cjk

Shell

sudo pacman -S zsh

Change default shell to zsh:

chsh -s $(which zsh)

Terminal

sudo pacman -S alacritty kitty

Editor

Neovim 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 gedit nano

Program Launcher

sudo pacman -S wofi

Status Bar

sudo pacman -S waybar

File Manager

sudo pacman -S ranger nemo

For image previews in ranger, kitty needs a dependency:

sudo pacman -S python-pillow

Image Viewer

sudo pacman -S imv

Browser

sudo pacman -S firefox chromium

Screenshot

yay -S hyprshot

Screen Recorder

yay -S obs-studio-git

You have to install additional packages. Please follow these instructions: https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580

Media Player

sudo pacman -S vlc

PDF Viewer

sudo pacman -S zathura zathura-pdf-mupdf

Color Temperature Adjustment

sudo pacman -S gammastep

Wallpapers

Check these amazing wallpapers that harmonize with the Everforest theme: https://github.com/Apeiros-46B/everforest-walls cd $HOME/Pictures/ && git clone https://github.com/Apeiros-46B/everforest-walls.git

GTK Dark Theme

To make GTK applications (e.g. nemo) use dark theme, execute the following commands:

#gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'
#gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
echo 'GTK_THEME=Adwaita:dark' | sudo tee -a /etc/environment >/dev/null

Multiple Monitors

Install nwg-displays to assist with positioning of monitors:

yay -S nwg-displays

The below worked for my stacked monitor configuration connected via USBC / Displayport hub:

monitor=DP-2, 3440x1440, 0x0, 1
monitor=DP-4, 3440x1440, 0x1440, 1

Other Tools

Programming Languages

These languages are needed for Mason, the LSP package manager in Neovim:

sudo pacman -S nodejs npm rust go ruby rubygems php composer lua luarocks python python-pip dotnet-runtime dotnet-sdk julia java-runtime-common java-environment-common jdk-openjdk

Programming utilities

OSS-Code (VSCode)

sudo pacman -S code  

Chat utilities

yay -S slack-desktop discord

Gaming

Enable multilib repository for Steam:

sudo nvim /etc/pacman.conf

Uncomment the following:

[multilib]
Include = /etc/pacman.d/mirrorlist
sudo pacman -Sy steam ttf-liberation

CLI utilities

sudo pacman -S tldr fzf wget curl tar unzip gzip htop neofetch
yay -S pfetch
  • tldr: Commands cheat sheet
  • fzf: Fuzzy finder
  • wget: Fetching packages from the web
  • curl: Fetching packages from the web
  • tar: Enzipping/Unzipping
  • unzip: Enzipping/Unzipping
  • gzip: Enzipping/Unzipping
  • htop: CLI task manager
  • neofetch: System information
  • pfetch: More concise system information

Alternatives to traditional commands

sudo pacman -S fd ripgrep bat eza tree-sitter tree-sitter-cli
  • fd: Alternative to find command
  • ripgrep: Alternative to grep command
  • bat: Alternative to cat command
  • eza: Alternative to ls command (fork of exa)
  • tree-sitter & tree-sitter-cli: Real syntax highlighting in Neovim

Reboot

When done installing the necessary packages, run the sudo reboot command.

Quick Ricing

You can either clone the repository and move the files manually to your ~/.config directory or you could use the hyprforest-installer:

Manual Installs

Troubleshooting

Missing seatd socket

If you get the following warning:

"[libseat/backend/seatd.c:70] Could not connect to socket /run/seatd.sock: no such file or directory"

Then open /etc/environment and add the following line:

LIBSEAT_BACKEND=logind

Unable to load such font with such kernel version

If you get the warning "Unable to load such font with such kernel version" when starting up then edit the /etc/mkinitcpio.conf file as follows:

  1. Check for the line BINARIES= and set it to setfont:
BINARIES=(setfont)
  1. Check for the line HOOKS= and replace keymap and consolefont with sd-vconsole:
HOOKS=(base udev autodetect modconf kms keyboard sd-vconsole block filesystems fsck)

Then run:

mkinitcpio -P

Missing Firmware when (re-)generating presets

When mkinitcpio -P outputs warnings about missing firmware you can install this AUR packet:

yay -S mkinitcpio-firmware

Then run:

mkinitcpio -P

org.freedesktop.Notifications: No such file or directory

Install the package notification-daemon:

sudo pacman -S notification-daemon

Create the file org.freedesktop.Notifications.service in /usr/share/dbus-1/services with following content:

[D-BUS Service]
Name=org.freedesktop.Notifications
Exec=/usr/lib/notification-daemon-1.0/notification-daemon

No such interface org.freedesktop.portal.settings

Install the following package:

sudo pacman -S xdg-desktop-portal-gtk

Grub not detecting Windows boot entry in grub

Run the following steps to add a menu entry for Windows if dual booting:

sudo fdisk -l

You should get a long return that includes something like this:

Device             Start        End   Sectors   Size Type
/dev/nvme0n1p1      2048    1050623   1048576   512M EFI System
/dev/nvme0n1p2   1050624  874729471 873678848 416.6G Linux filesystem
/dev/nvme0n1p3 874729472  874762239     32768    16M Microsoft reserved
/dev/nvme0n1p4 874762240 1000214527 125452288  59.8G Microsoft basic data

Get the UUID of the EFI partition sudo blkid /dev/nvme0n1p1 (replace nvme0n1p1 with the correct partition for you)

Return: dev/nvme0n1p1: UUID="3C26-6A4C" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3b64b43f-e7eb-4ac8-a32c-9af2edf64d0d"

Grant yourself write permission to the '40_custom' file in /etc/grub.d

Open the terminal (ctrl+alt+t) and run the following commands:

sudo chmod o+w /etc/grub.d/40_custom

Edit the 40_custom file

nvim /etc/grub.d/40_custom

Write the following at the bottom of the file and replace 3C26-6A4C with the correct UUID:

menuentry 'Windows 11' {
    search --fs-uuid --no-floppy --set=root 3C26-6A4C
    chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi
}

Save the file and close the editor.

Back in the terminal, remove write permissions.

sudo chmod o-w /etc/grub.d/40_custom

Update GRUB:

grub-mkconfig -o /boot/grub/grub.cfg

(Optional) You can confirm that your change was successful by going to /boot/grub/grub.cfg and checking lines 243-251. It should reflect your edits in the 40_custom file

Reboot your computer reboot

arch-everforest's People

Contributors

3rfaan avatar lollan avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.