Arch install script, forgot

This commit is contained in:
KK
2026-06-25 08:37:41 +02:00
parent eea43ae978
commit d1a43f0ff9

153
arch-install.sh Executable file
View File

@@ -0,0 +1,153 @@
#!/bin/bash
set -euo pipefail
username=kk
core_packages=(
tmux
kakoune
man-db
man-pages
clang
make
tcc
ripgrep
curl
plocate
fzf
gdb
which
)
network_packages=(
openssh
sshfs
)
desktop_packages=(
sway
swayidle
swaybg
swaylock
foot
wmenu
polkit # this is needed to fix swayidle not being to suspend because it doesn't have the authority, systemd-logind asks it for policy
xorg-xwayland
wl-clipboard
xdg-desktop-portal-wlr
xdg-user-dirs
xdg-utils
grim
)
media_packages=(
pipewire
pipewire-pulse
pipewire-alsa
pipewire-jack
wireplumber
pavucontrol
ffmpeg
imv
mpv
)
font_packages=(
ttf-fira-code
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
ttf-liberation
ttf-dejavu
ttf-roboto
)
app_packages=(
firefox
)
machine_packages=(
nvidia-open
)
if [[ ${EUID} -ne 0 ]]; then
printf 'Run this script as root inside arch-chroot.\n' >&2
exit 1
fi
ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
hwclock --systohc
sed -i 's/^#\(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen
sed -i 's/^#\(pl_PL.UTF-8 UTF-8\)/\1/' /etc/locale.gen
locale-gen
cat >/etc/locale.conf <<'EOF'
LANG=en_US.UTF-8
EOF
cat >/etc/vconsole.conf <<'EOF'
KEYMAP=pl2
EOF
bootctl install
cat >/boot/loader/loader.conf <<'EOF'
default arch.conf
timeout 0
console-mode max
editor no
EOF
root_uuid=$(findmnt -no UUID /)
if [[ -z ${root_uuid} ]]; then
printf 'Could not detect root filesystem UUID. Check findmnt/blkid manually.\n' >&2
exit 1
fi
cat >/boot/loader/entries/arch.conf <<EOF
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=UUID=${root_uuid} rw
EOF
bootctl status
systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
install -d /etc/systemd/network
ln -sf /usr/lib/systemd/network/89-ethernet.network.example /etc/systemd/network/89-ethernet.network
if ! id -u "${username}" >/dev/null 2>&1; then
useradd -m -s /bin/bash -G wheel,video,render "${username}"
fi
install -m 0750 -d /etc/sudoers.d
cat >/etc/sudoers.d/00-wheel <<'EOF'
%wheel ALL=(ALL:ALL) ALL
EOF
chmod 0440 /etc/sudoers.d/00-wheel
visudo -cf /etc/sudoers.d/00-wheel
passwd "${username}"
pacman -Syu --needed \
"${core_packages[@]}" \
"${network_packages[@]}" \
"${desktop_packages[@]}" \
"${media_packages[@]}" \
"${font_packages[@]}" \
"${app_packages[@]}" \
"${machine_packages[@]}"
updatedb
systemctl enable sshd.service
printf '\nChroot setup complete. Exit, unmount /mnt, reboot, then log in as %s.\n' "${username}"
printf 'After first login, run: xdg-user-dirs-update\n'
printf 'After first login, run: systemctl --user enable --now pipewire pipewire-pulse wireplumber\n'
printf 'Generate SSH key after first login with: ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519\n'