10 Commits
4 changed files with 114 additions and 41 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
This installation script aims for a simple (read minimal) Arch Linux installation, which is modern in the way that it uses UEFI, systemd-boot and Wayland, secure in the way that it uses full-disk encryption using LUKS as well as flexibility by using Btrfs subvolumes for the root and home partition.
Tested and working as of **June 2026**.
Tested and working as of **July 2026**.
![Post-install screenshot.](img/screenshot.png)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 317 KiB

+30 -38
View File
@@ -207,10 +207,7 @@ echo "Decrypting.. This also might take a while."
echo
echo -en "${pwcr}\n${pwcr}" | cryptsetup luksOpen "/dev/${main}" main
echo "Partition successfully opened."
echo
lsblk | grep "${dev}"
echo
clear
##########
@@ -245,10 +242,7 @@ mount -o autodefrag,compress=zstd:3,subvol=home "/dev/mapper/main" "/mnt/home"
mkdir "/mnt/boot"
mount "/dev/${boot}" "/mnt/boot"
echo "Mounting complete."
echo
lsblk -a
echo
clear
##########
@@ -260,11 +254,9 @@ echo "Done."
echo
# Check if keyring is up-to-date
if checkupdates | grep -q archlinux-keyring; then
echo "Updating keyring.."
pacman -Sy archlinux-keyring --noconfirm
pacman -Sy archlinux-keyring --needed --noconfirm
echo "Done."
fi
echo
# Installing base system
@@ -340,7 +332,7 @@ all_packages=(
pacstrap "/mnt" "${all_packages[@]}"
echo "Base system installed."
echo
clear
##########
@@ -351,38 +343,32 @@ genfstab -Up "/mnt" > "/mnt/etc/fstab"
echo "Done."
echo
# Set hardware clock
# Set time and hardware clock
# https://wiki.archlinux.org/title/Installation_guide#Time
arch-chroot "/mnt" hwclock --systohc # Set the Hardware Clock to the current System Time
echo "Setting timezone and clock.."
arch-chroot "/mnt" ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
arch-chroot "/mnt" hwclock --systohc
echo "Done."
echo
# Generate locale
# Set hostname
# https://wiki.archlinux.org/title/Installation_guide#Network_configuration
echo "Setting hostname.."
echo "${host}" > "/mnt/etc/hostname"
echo "Done."
echo
# Set locale and keymap
# https://wiki.archlinux.org/title/Installation_guide#Localization
echo "Setting locale and keymap.."
echo "en_US.UTF-8 UTF-8" >> "/mnt/etc/locale.gen"
arch-chroot "/mnt" locale-gen
arch-chroot "/mnt" localectl set-locale LANG=en_US.UTF-8
# Set keymap, locale, timezone and hostname
# https://wiki.archlinux.org/title/Systemd-firstboot
service_dir="/mnt/etc/systemd/system/systemd-firstboot.service.d"
mkdir "${service_dir}"
rootdir="/mnt"
keymap="de-latin1-nodeadkeys"
locale="en_US.UTF-8"
timezone="Europe/Berlin"
cat << EOF > "${service_dir}/install.conf"
[Unit]
ConditionFirstBoot=
[Service]
ExecStart=
ExecStart=/usr/bin/systemd-firstboot --root="${rootdir}" --keymap="${keymap}" --locale="${locale}" --timezone="${timezone}" --hostname="${host}" --force
[Install]
WantedBy=sysinit.target
EOF
arch-chroot "/mnt" systemctl enable systemd-firstboot.service
echo "KEYMAP=de-latin1-nodeadkeys" > "/mnt/etc/vconsole.conf"
arch-chroot /mnt localectl set-keymap --no-convert de-latin1-nodeadkeys
echo "Done."
echo
##########
@@ -466,6 +452,12 @@ arch-chroot /mnt useradd -m "${user}"
echo -en "${pwur}\n${pwur}" | arch-chroot /mnt passwd "${user}"
arch-chroot /mnt gpasswd -a "${user}" wheel
sed -i '82s/.*/%wheel ALL=(ALL) ALL/' /mnt/etc/sudoers
# Create keyboard layout
config_dir="/home/${user}/.config"
arch-chroot /mnt sudo -u "${user}" mkdir -p "${config_dir}"
arch-chroot /mnt sudo -u "${user}" bash -c \
"printf '[Layout]\nLayoutList=de\nUse=true' >> ${config_dir}/kxkbrc"
echo "Done."
echo
+81
View File
@@ -0,0 +1,81 @@
### Arch Linux Konfiguration
## KDE Plasma
- disable Plasma splash screen
- set pointer to Breeze Light
- set task switcher to large icons
- set taskbar to auto hide and no floating
- disable desktop effect: highlight screen edges
- change wallpaper for desktop, lock screen and login screen
- set up kwallet
- disable restore sessions
- disable confirmation for shutdown etc.
- set windows position + size (for signal, telegram, firefox, keepass, konsole)
- set krusader pos 192,108 size 1536,864
- set touchpad to natural scrolling
- set shortcut strg + alt + q to lock screen
- set taskbar size 42
- edit .config/kwinrc (.4/.6)
- set animation speed to 90 %
- set up night light
- edit tray icons
## Apps
- telegram-desktop signal-desktop thunderbird krusader keepassxc nextcloud-client
- yay (git base-devel)
- yay-bin
- btop
- timeshift + backintime
- standardnotes-bin
- borg
- fwupd, fastfetch
- docker and docker-compose
- power-profile-daemon
- nano-syntax-highlighting
- amd-ucode (enable in bootloader)
- reflector
- journalctl-desktop-notification
- pacman-contrib (for paccache)
- vulkan-radeon, libvdpau-va-gl (hardware video acceleration for Firefox)
- jq
- rmtrash
- remove gnu-free-fonts (bug btop braille)
## Firefox
- set privacy to strict
- set clear browser history on close
- plasma integration, ublock, snowflake, keepass browser integration add ons
- set up hardware acceleration for firefox (vulkan-radeon, libvdpau-va-gl)
## Misc
- set up Bash color prompt
- nano: enable syntax highlighting
- enable cronie service
- set up zram-generator
- update fwupd (and enable timer)
- enable discard/TRIM for LUKS device (sudo cryptsetup --allow-discards --persistent refresh main)
- set journald max size to 1G
- fix permission for boot in /etc/fstab (fmask=0177,dmask=0077)
- enable sshd service, create ssh key
- add misc bash alias
## Power
- set Plasma power management (on AC power = Balanced, on battery = Power Save)
- set boot option for AMD p-state (options amd_pstate=active)
## Pacman
- enable color
- set up reflector config
- enable multilib repos in pacman.conf
- enable reflector.timer
## Docker
- enable docker service
- container: scrutiny, hawser, beszel, watchtower
- add user to docker group
- add docker-prune.sh to crontab
## Backups
- set up timeshift
- set up backintime
- write and enable backintime user service and timer