ThinkPad L530 - Arch Linux Setup
So 07.09.2025

Nach der Installation des Grundsystems folgt nun ein kurzer Überblick über die weiteren Schritte, die nötig sind, um zu einem vollständigen System mit grafischer Oberfläche zu kommen. Das meiste davon ist in verschiedenen Wikis gut beschrieben, allerdings dauert es zumindest bei mir immer etwas, bis man dann alles Programme und Konfigurationen so zusammen hat, wie man sich das vorstellt.

Einen guten Überblick erhält man wie immer im Arch Wiki.

Einrichten eines Nutzers

useradd -m -G wheel fb
passwd fb
visudo # Erlaube Mitglieder der Gruppe wheel das verwenden von sudo

Programme

Nach dem Login mit dem neuen Benutzer werden zunächst mal die benötigten Programme installiert:

sudo pacman -Syu alacritty brightnessctl diff-so-fancy emacs-wayland firefox fuzzel gnome-keyring gvfs hostname htop hunspell hunspell-de hunspell-en_us iptables-nft inetutils isync libnotify ly mako msmtp niri openssh pass pcmanfm-gtk3 ripgrep seahorse stow swaybg swayidle swaylock syncthing ufw waybar wev wlsunset xdg-desktop-portal-gtk xdg-user-dirs xwayland-satellite

Einrichten der Standardordner:

xdg-user-dirs-update

Einrichten von SSH

Als nächstes wird SSH konfiguriert, um auf meinen Server zugreifen zu können und so die Konfigurationen der verschiedenen Programme abrufen zu können. Zunächst wird der Key erzeugt:

ssh-keygen -t ed25519 -C "fb@prox"

Dann muss dieser noch auf den entsprechenden Servern hinzugefügt werden.

GnuPG

Analog zu SSH muss zunächst erst einmal ein Key generiert werden:

systemctl --user start gnome-keyring-daemon.socket 
gpg --full-gen-key

Details zum gnome-keyring. Danach kann der password-store initialisiert werden:

pass init fb

Dann können die verschiedenen Passwörter hinzugefügt werden.

Emacs Verschlüsselung schlägt fehl

Falls die Verschlüsselung mit dem Fehler Unusable public key fehlschlägt, sollte man zunächst prüfen, ob nicht in der gpg.conf, welche aus git installiert wurde (s. unten) ein default-key gesetzt ist. Dieser überschreibt sämtliche Einstellungen und Auswahlen, die man in Emacs treffen kann.

Dotfiles klonen

Mit ssh und gnupg eingerichtet, kann nun das Git Repository mit den verschiedenen Konfigurationen geklont werden:

git clone git@<my-server>:/home/git/dotfiles.git
mkdir -p ~/.local/bin
ln -s ~/Workspace/dotfiles/.install.sh ~/.local/bin/dotfiles
~/.local/bin/dotfiles stow bash

Nachdem die bash Konfiguration existiert ist .local/bin nun auch Teil des PATH. Jetzt können alle weiteren Konfigurationen verlinkt werden:

dotfiles stow ssh
dotfiles stow git
dotfiles stow gnupg
mkdir -p ~/.config/emacs # verhindert, dass komplette Ordner gesymlinked wird und dann die temporären Dateien im dotfiles Projekt landen
dotfiles stow emacs
dotfiles stow waybar
dotfiles stow niri
dotfiles stow swaybg
dotfiles stow swayidle
dotfiles stow wlsunset
dotfiles stow xwayland
dotfiles stow mbsync
dotfiles stow msmtp
dotfiles stow pcmanfm

Konfiguration des Window Managers

Es wird der oben installierte Display Manager ly verwendet:

sudo systemctl enable ly.service

Dieser erkennt niri automatisch und man kann sich direkt mit Nutzername und Password anmelden und landet in einer grafischen Benutzerumgebung.

Dann werden wie hier erklärt verschiedene Services als Abhängigkeiten zu niri hinzugefügt:

systemd --user add-wants niri.service mako.service
systemd --user add-wants niri.service waybar.service
# Konfiguration mit Pfad zum Hintergrundbild muss angelegt werden
systemd --user add-wants niri.service swaybg.service
# Konfiguration von swayidle
systemd --user add-wants niri.service swayidle.service
systemd --user add-wants niri.service xwayland.service # xwayland-satellite
systemd --user add-wants niri.service wlsunset.service # Zum Anpassen der Farbtemperatur des Bildschirms am Abend (wlsunset -l <lat> -L <lng>)
systemd --user add-wants niri.service pcmanfm.service # Zum automatischen Mounten von USB-Geräten (pcmanfm --daemon-mode)

Installation von yay

Zunächst muss noch resolved konfiguriert werden:

ln -sf ../run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Danach kann yay installiert werden:

mkdir -p ~/Workspace/aur/
cd ~/Workspace/aur
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Emacs Anpassung für niri

Um Emacs zusammen mit niri als Tiling-WM zu verwenden, sollen möglichst keine Emacs eigenen Windows erzeugt werden, sondern immer eigenständige Frames, welche dann von niri verwaltet werden können. Hierzu bedarf es einiger zusätzlicher Konfiguration in Emacs.

Zunächst aber werden noch ein paar weitere git Repositories aufgesetzt:

cd ~/Dokumente
git clone git@<my-server>:/home/git/org.git
cd ~/Workspace/github
git clone git@github.com:fbrosda/fbrosda.github.io.git

Einen guten Überblick über die Emacs Konfiguration nur mit Frames findet man in dem Repository zum frames-only-mode.

Die grundsätzlichen Einstellungen:

(setopt default-frame-alist '((font . "InputMono Nerd Font Condensed 12")
                              (vertical-scroll-bars . nil)
                              (horizontal-scroll-bars . nil))

        display-buffer-base-action '(nil (pop-up-frames . t))
        frame-auto-hide-function 'delete-frame
        gdb-use-separate-io-buffer nil
        gdb-many-windows nil

        org-src-window-setup 'other-frame
        org-agenda-window-setup 'other-frame

        magit-commit-show-diff nil)

Zur Verwendung von display-buffer-base-action findet man hier weitere Informationen.

Zum automatischen Schließen einiger Programme kann folgende Funktion verwendet werden:

(defun maybe-delete-frame (&optional buffer event)
  (when (and (display-graphic-p)
             (one-window-p)
             (> (length (frame-list)) 1))
    (delete-frame)))

Diese habe ich zu wl-folder-suspend-hook, vterm-exit-functions und eshell-exit-hook hinzugefügt. Wanderlust verwende ich zudem via wl-other-frame.

Syncthing

Der User-Service muss aktiviert werden

systemctl --user enable --now syncthing.service

Das Webinterface ist dann unter localhost:8384 verfügbar.

UFW

Die Installation enthält ufw und iptables-nft, um die neuere netfilter Firewall zu verwenden. Das Setup wird im Wiki gut erklärt. Die Konfiguration benötigt root Rechte:

ufw default deny
ufw allow from 192.168.178.0/24
ufw allow syncthing
ufw enable
ufw status verbose

Fazit

Insgesamt zeigt sich, dass das Setup der Benutzeroberfläche, wenn man nicht auf ein vollständiges Desktop Environment wie Gnome oder KDE zurückgreift recht viel kleinteilige Konfigurationsarbeit. Gleichzeitig funktionieren einige Dinge, wie Grafik, Audio und suspend, mit systemd, wayland und pipewire mittlerweile relativ einfach. Selbst diese grundsätzlichen Dinge waren mit X.org, alsa, etc teilweise noch recht mühsam. Zudem bietet niri mit waybar nicht nur eine funktionale, sonder auch durchaus optisch ansprechende Umgebung.

Autor: Fabian Brosda

Erstellt: So 07.09.2025

Dieses Werk ist lizensiert unter CC BY 4.0CCBY

Erstellt mit: Emacs 29.3 (Org mode 9.6.15)