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.