# System Setup Guide Complete guide for Arch Linux installation and system configuration. ## Initial Installation ### Pre-installation 1. Boot from Arch ISO 2. Verify boot mode: `ls /sys/firmware/efi/efivars` 3. Connect to internet: `iwctl` for WiFi 4. Update system clock: `timedatectl set-ntp true` ### Disk Preparation 1. List disks: `fdisk -l` 2. Partition the disk: `cfdisk /dev/sdX` - EFI partition: 512M, type EFI System - Root partition: remaining space, type Linux filesystem 3. Format partitions: ```bash mkfs.fat -F32 /dev/sdX1 # EFI mkfs.ext4 /dev/sdX2 # Root ``` 4. Mount filesystems: ```bash mount /dev/sdX2 /mnt mkdir /mnt/boot mount /dev/sdX1 /mnt/boot ``` Current partition setup is a quite fragmented leftover from my dual-booting days. Later we should wipe the leftover Windows drive for extra storage, but first we should confirm there's no essential files there (unlikely since it wasn't booted for months, mostly using other windows PC) ### System Installation 1. Install base packages: `pacstrap /mnt base linux linux-firmware` 2. Generate fstab: `genfstab -U /mnt >> /mnt/etc/fstab` 3. Chroot: `arch-chroot /mnt` 4. Set timezone: `ln -sf /usr/share/zoneinfo/Europe/Budapest /etc/localtime` 5. Generate hardware clock: `hwclock --systohc` 6. Configure locale: - Edit `/etc/locale.gen`, uncomment `en_US.UTF-8 UTF-8` - Run: `locale-gen` - Create `/etc/locale.conf`: `LANG=en_US.UTF-8` 7. Set hostname: `echo "homelab" > /etc/hostname` 8. Configure hosts file 9. Set root password: `passwd` 10. Install bootloader: `pacman -S grub efibootmgr` 11. Install GRUB: `grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB` 12. Generate config: `grub-mkconfig -o /boot/grub/grub.cfg` ## Post-Installation Setup ### User Management ```bash # Create user useradd -m -G wheel -s /bin/bash hoborg passwd hoborg # Configure sudo pacman -S sudo visudo # Uncomment %wheel ALL=(ALL) ALL ``` ### Essential Packages ```bash pacman -S git base-devel openssh networkmanager systemctl enable NetworkManager systemctl enable sshd ``` ### AUR Access ```bash # Install yay AUR helper git clone https://aur.archlinux.org/yay.git cd yay makepkg -si ``` ## Desktop Environment ### XFCE Installation ```bash pacman -S xfce4 xfce4-goodies lightdm lightdm-gtk-greeter systemctl enable lightdm ``` ### Themes and Appearance - **Window Manager Theme**: Matcha-dark-aliz - **Icons**: Papirus-Maia - **Fonts**: - System: Install Nerd Fonts (`ttf-iosevkaterm-nerd ttf-jetbrains-mono-nerd`) - TTY: ter-124b (12x24 bold) ## Development Environment ### Dotfiles Management ```bash # Install yadm pacman -S yadm # Clone dotfiles yadm clone git@gitlab.com:akrejczinger/dotfiles.git ``` ### Shell Configuration - **Shell**: zsh with antidote plugin manager - **Terminal**: wezterm with Catppuccin theme - **Multiplexer**: tmux with catppuccin theme and temperature monitoring - **Editor**: neovim with lazy.nvim plugin manager ### Key Configurations - **Keyboard Layout**: Colemak (US variant in X11) - **TTY Layout**: Colemak with caps lock → backspace via systemd service - **Font Fallbacks**: Noto fonts for Unicode support ## TTY Configuration ### Font and Layout ```bash # Configure /etc/vconsole.conf KEYMAP=colemak FONT=ter-124b FONT_MAP=8859-1 ``` ### Caps Lock Fix Caps lock mapped to backspace via systemd service: ```bash # /etc/systemd/system/caps-backspace.service sudo setkeycodes 3a 14 # Map caps scancode to backspace keycode ``` ### Color Scheme TTY colors configured in `.zshrc` for better readability. ## System Maintenance ### Package Management - Regular updates: `yay -Syu` - Orphaned packages: `yay -Yc` - Cache cleanup: `yay -Sc` ### Backup Strategy - Dotfiles: yadm + git repository - System configs: Document in this guide - User data: External backup solution ## Hardware-Specific Notes ### ThinkPad Optimizations - **Temperature Monitoring**: Available via `sensors` command - **Battery Management**: TLP for power optimization - **Trackpad**: libinput with natural scrolling - **Function Keys**: Media keys work out of box ### Network Configuration - **WiFi**: NetworkManager with GUI applet - **Ethernet**: Automatic DHCP - **Bluetooth**: bluez with pulseaudio integration