Author SHA1 Message Date
taxicomics 87b7c7a76f Updated Readme
- included keyboard layout instruction
- changed file directory name
- removed herobrine
2026-07-07 19:57:42 +02:00
dataprolet 2e8b0dd244 fix: replace missing $user var 2026-07-07 09:42:25 +02:00
dataprolet 231a1f5500 Add post/post-install-new.md 2026-07-06 21:36:46 +02:00
dataprolet da64a7b42f fix: remove checkupdates, add new screenshot, edit README 2026-07-04 12:19:04 +02:00
dataprolet b14b8427d3 fix: write config file 2026-07-04 12:01:08 +02:00
dataprolet da42e26a3c fix ccreate config as user 2026-07-04 11:25:11 +02:00
dataprolet 687d9fa02d fix: typo 2026-07-02 18:12:47 +02:00
dataprolet 1250ee6944 fix: create config dir 2026-07-02 18:06:27 +02:00
dataprolet 0544466d93 fix: create keyboard layout after user 2026-07-02 14:38:55 +02:00
dataprolet c5d9c10b92 add KDE Plasma keyboard layout 2026-07-01 23:44:14 +02:00
dataprolet bf60df94eb revert systemd-firstboot config 2026-07-01 22:15:23 +02:00
4 changed files with 123 additions and 43 deletions
+10 -3
View File
@@ -4,21 +4,28 @@
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)
## Set your keyboard layout correctly
Before starting the install script you should set your keyboard layout correctly. Otherwise you might run into problems with mismatching passwords.
```
loadkeys de
```
## To automatically install Arch Linux, clone this repository:
```
$ pacman -Sy git
$ git clone https://git.dataprolet.de/dataprolet/Arch-Linux-Installer.git
$ cd arch
$ cd Arch-Linux-Installer
$ sh install.sh
```
### Or as a one-liner:
```
# pacman -Sy git --noconfirm && git clone https://git.dataprolet.de/dataprolet/Arch-Linux-Installer.git && cd arch && sh install.sh
# pacman -Sy git --noconfirm && git clone https://git.dataprolet.de/dataprolet/Arch-Linux-Installer.git && cd Arch-Linux-Installer && sh install.sh
```
### Post-Install
Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 317 KiB

+32 -40
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
echo "Done."
fi
echo "Updating keyring.."
pacman -Sy archlinux-keyring --needed --noconfirm
echo "Done."
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