- Arch Linux system configuration guide
This guide provides step-by-step instructions for deploying Hyprland to an Arch Linux installation, including package installation, theming, configuration, and backup restoration.
This is intended for single user devices, personal devices that aren't going to be shared by multiple linux users.
Up to section 4. System Configuration the guide is supposed to be system and backup agnostic and should work in any system.
Credits to cjbassi for the waybar theme.
Credits to catppuccin/dunst for the dunst theme.
Credits to EricKotato/sddm-slice for the sddm theme.
Credits to connorholyday/kitty-snazzy for the kitty theme.
GTK theme is Adwaita-dark. Oh-my-zsh theme is powerlevel10k.
Special thanks to the Arch Linux team and the folks behind Hyprland.
NeoVim configuration is provided by LazyVim.
This guide isn't prescriptive about how to install Arch Linux, but it requires the installation of the desktop profile with hyprland by using archinstall.
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si
cd ..
rm -rf yay-bin
yay -S yay
yay -Scc
Install the following packages using yay
:
yay -S --needed \
acpi \
bc \
bind \
blueman \
brightnessctl \
cliphist \
dunst \
fd \
frece \
fzf \
gnome-system-monitor \
grimblast-git \
hyprcursor \
hyprlock \
hyprpaper \
inotify-tools \
jq \
kdeconnect \
ksnip \
less \
lsd \
man-db \
ncdu \
noto-fonts \
noto-fonts-emoji \
otf-font-awesome \
pamixer \
pavucontrol \
plocate \
rofi-wayland \
rsync \
unzip \
waybar \
wl-clip-persist \
xorg-xhost \
zen-browser-bin \
zip \
zsh-fast-syntax-highlighting
Install these language-specific packages:
yay -S --needed \
go \
neovim \
npm \
pyenv \
rust
Install nix in single user mode:
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon
It's more convenient to install from nix official scripts than with arch native package manager to avoid permission issues in neovim.
Clone this repo and deploy it to ~/.config
git clone https://github.com/gchamon/archlinux-system-config
rsync -va ~/archlinux-system-config/ ~/.config
rm -rf ~/archlinux-system-config
System specific configurations reside in ~/.config/hypr/config
. To deploy one config, create a symbolic link for it:
ln -s ~/.config/hypr/config/nitro.conf ~/.config/hypr/config/current.conf
If no system specific configuration applies, deploy the empty config:
ln -s ~/.config/hypr/config/empty.conf ~/.config/hypr/config/current.conf
For brightnessctl
to work, use $backlightDevice
to configure which device
brightnessctl
should use to control brightness.
To get a list of the available devices, run:
ls -1 /sys/class/backlight/
If none is available, you should try using linux-lts
kernel and play around
with acpi_backlight
kernel parameter. For more information see ACPI
backlight control and archlinux docs on Backlight's
kernel command-line
options.
Zsh shell relies on oh-my-zsh
and powerlevel10k
, which will need to be installed:
yay -S --needed \
zsh \
zsh-completions \
oh-my-zsh-git \
zsh-theme-powerlevel10k \
ttf-meslo-nerd
test -f ~/.zshrc && mv ~/.zshrc{,.bk}
ln -s ~/.config/.zshrc ~/.zshrc
There are four preconfigured powerlevel10k prompt styles. Choose one of
.p10k-classic.zsh
, .p10k-lean.zsh
, .p10k-pure.zsh
or .p10k-rainbow.zsh
and create a symbolic link to ~/.p10k.zsh
:
ln -s ~/.config/.p10k-classic.zsh ~/.p10k.zsh
There is a fifth powerlevel10k prompt style that is geared towards supporting
tty shells, which is called .p10k-portable.zsh
and it should be deployed to
the home folder along with the chosen profile:
ln -s ~/.config/.p10k-portable.zsh ~/.p10k-portable.zsh
Now change the shell to zsh
if necessary:
chsh -s $(which zsh)
This is for the screenshot utility to work.
mkdir -p ~/Pictures/Screenshots
yay -S --needed \
archlinux-wallpaper \
gnome-themes-extra \
qt5-graphicaleffects \
xcursor-breeze5
Unfortunately the main branch of the slice theme repo isn't compatible with
SDDM, making it impossible to just install sddm-slice-git
. You must download
and extract the tar archive related to the v1.5.1
release and
deploy it to /usr/share/sddm/themes/slice
manually.
- Download the SDDM Slice theme v1.5.1.
- Deploy to SDDM themes directory:
cd ~/Downloads
tar -xzvf sddm-slice-1.5.1.tar.gz
sudo mv sddm-slice-1.5.1 /usr/share/sddm/themes/slice
- Configure sddm theme:
cat > /tmp/theme.conf <<EOF
[Theme]
Current=slice
EOF
sudo mkdir -p /etc/sddm.conf.d
sudo mv /tmp/theme.conf /etc/sddm.conf.d
- Install NWG Look
yay -S nwg-look
- Configure
Adwaita-dark
in the theme picket. To run the picker, bring up the runner modal withSUPER+R
and chooseGTK Settings
.
These are options that need to be passed to the kernel at boot time. See the bootloader docs for information on how to add these options.
For systemd-boot, which I use, they are located at /boot/loader/entries/
. One
of the entries is the fallback, which should be left untouched.
nvidia_drm.modeset=1
(Use this if you're using NVIDIA proprietary drivers, as per the Hyprland master tutorial.)
For my Acer Nitro notebook, I need to add the following boot option so I can
control the device's built-in screen brightness with brightnessctl
:
acpi_backlight=native
yay -S gnome-keyring seahorse
Enable and start the following services:
# User services
for service in gcr-ssh-agent; do
systemctl --user enable $service
systemctl --user start $service
done
# System services
for service in bluetooth; do
sudo systemctl enable $service
sudo systemctl start $service
done
Cronjobs are in the cronjobs/
folder and can be deployed with rsync:
sudo rsync -va ./cronjobs/ /etc/
Current cronjobs are:
Cronjob | Description |
---|---|
cron.hourly/yay_pkglist | Takes an inventory of the packages manually installed with yay and writes it to /etc/pkglist.txt |
These are documents that expand the documentation on this desktop environment
Keyboard shortcuts documents all the possible keyboard shortcuts. The information is extracted from hyprland configuration using Google's Gemini LLM.
Keyboard customizations documents the deployment of xkeyboard-config compatible customizations that makes it easier to type in a different language than that of the keyboard in use.
The Backup and Restore guide isn't intended to be generally applicable outside my personal environment. It's there for my personal disaster recovery drills, but could inspire others looking for backup strategies.
This document explains steps to install and configure tools I need for daily work as a developer.