Configuring a fresh Archlinux Install
Intro
This entry will provide you with the first few steps needed to get a fresh Arch install running and happy.
Setting up a Network Connection
In order to install all missing programs on-the-fly, a working internet connection is important.
We first make sure that the systemd-networkd
and systemd-resolved
services automatically start when booting:
$ systemctl enable --now systemd-networkd.service
$ systemctl enable --now systemd-resolved.service
If you use programs which rely on /etc/resolv.conf
, you need to do the following:
$ ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Next, we establish a wired connection by editing /etc/systemd/network/20-wired.network
:
[Match]
Name=<network interface>
[Network]
DHCP=yes
Finally, we restart the service to make it aware of our recent changes:
systemctl restart systemd-networkd.service
“Essential” Programs
In order to complete the following steps, some additional programs might be needed. In order to install those and other cool ones, update the pacman database (pacman -Syy
) and install the following applications:
vim-minimal
- text editing and much moreparu
- easy installation of AUR packagesmplayer
/mpv
- multimedia playerhtop
- resource usage statswget
- network downloaderbash-completion
- guess whatevince-gtk
- pdf viewerfeh
- image viewerscrot
- screenshot applicationdowngrade
- downgrad packagespkgfile
- find out which package a program is instrace
- trace system calls and signalsgdb
- GNU debuggermtr
- ping + traceroutencdu
-du
with curses interfacessh-copy-id
- copy ssh public key to other host’s authorized_hosts filepacgraph
- see which packages are installed and moreradare2
- analyze binary fileshashcat
- crack hashesiodine
- tunnel IPV4 via DNSmps-youtube
- youtube player in terminalsyncthing
- share files between computers
Initial Configuration
This section will list a few common first steps after installing the basic system
Set a Hostname
$ hostnamectl set-hostname <hostname>
Set your Timezone
$ timedatectl set-timezone Europe/Berlin
Set locale
$ vim /etc/locale.gen # uncomment: "en_US.UTF-8 UTF-8"
$ locale-gen
$ locale -a # list available types
$ vim .config/locale.conf # export entries from `locale` as env vars
or
$ localectl set-locale LANG=en_US.UTF-8
Handle keyboard layout (console)
Adjust your keyboard layout according to your needs.
$ localectl status # show current configuration
$ localectl list-keymaps # list available layouts
$ loadkeys de-latin1 # temporarily load layout
$ vim /etc/vconsole.conf # add "KEYMAP=de-latin1" for permanent layout
Handle keyboard layout (Xorg)
It might be necessary to adjust X to the layout of your specific keyboard. For german ones, something like the following could be used.
$ vim ~/.xinitrc # add "setxkbmap de nodeadkeys &" at bottom
Set root Password
$ su
$ passwd
Setup Zsh
$ pacman -S zsh zsh-completions
You can now create a new user with Zsh as their default shell (see next section).
Add a Default User
$ useradd --create-home -g users --groups wheel --shell /usr/bin/zsh kpj
$ passwd kpj
[..]
Setting up the GUI
In order to have a fancy window manager, we have to install X and a driver first (the exact packages required depend on your particular GPU setup)
$ pacman -S xorg xorg-xinit
$ cp /etc/X11/xinit/xinitrc ~/.xinitrc
To then automatically start X on login, add
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
to the bottom of your ~/.zprofile
.
In order to automatically login after booting, simply create the file /etc/systemd/system/getty@tty1.service.d/autologin.conf
(assuming you’re using systemd) and paste the following content
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
Type=simple
Afterwards, e.g. i3
can then be easily installed and set to automatically start on boot
$ pacman -S i3 dmenu rxvt-unicode noto-fonts
$ vim ~/.xinitrc # add "exec i3" at bottom
Enabling Sound
This can now automagically all be done by installing the following packages:
$ pacman -S pipewire pipewire-alsa pipewire-pulse helvum
And subsequently restarting your computer.
Clock Synchronization
We haven’t used systemd
so far, so let’s do it (Ba Dum Tss!)
$ systemctl enable systemd-networkd
$ systemctl enable systemd-timesyncd
Using SSH
$ pacman -S openssh
$ ssh-keygen
$ systemctl enable sshd.service
Handle sudo
$ pacman -S sudo
$ EDITOR=vim visudo # -> %sudo ALL=(ALL) ALL
$ groupadd sudo
$ usermod -a -G sudo <user>
Init vim
Install this plugin manager and look here for an exemplary configuration file.
Useful .bashrc
edits
Colorful prompt for normal user:
PS1='\[\e[1;32m\][\u@\h \W]$\[\e[0m\] '
for root (same color but as background):
PS1='\[\e[1;32m\e[7m\][\u@\h \W]$\[\e[0m\] '
Weechat usage
$ pacman -S weechat
$ weechat
-> /server add freenode chat.freenode.net
-> /set irc.server.freenode.autoconnect on
-> /set irc.server.freenode.autojoin "#channel1,#channel2"
-> /set irc.server.freenode.nicks "kpj"
-> /set irc.server.freenode.command "/msg nickserv identify <password>"
-> /save