archsetup

bootstrapping script for Arch Linux
git clone git://git.hanetzok.net/archsetup
Log | Files | Refs | README

commit dce4867e0bf87432d301386bdc7285a35223fcb1
Author: Markus Hanetzok <markus@hanetzok.net>
Date:   Mon,  6 Oct 2025 23:37:32 +0200

initial commit

Diffstat:
AREADME | 8++++++++
Aaur.list | 4++++
Apost-install.sh | 128+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aprogs.list | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 228 insertions(+), 0 deletions(-)

diff --git a/README b/README @@ -0,0 +1,8 @@ +archsetup +========= +Very basic bootstrapping script for Arch Linux. + + +Usage +----- +Adjust the variables in post-install.sh and run it with root privileges. diff --git a/aur.list b/aur.list @@ -0,0 +1,4 @@ +zsh-syntax-highlighting-git +heroic-games-launcher +xdg-ninja +ttf-font-awesome-5 diff --git a/post-install.sh b/post-install.sh @@ -0,0 +1,128 @@ +#!/bin/sh + +set -e + +# variables used in the script +user="markus" +hostname="totoro" +tz="Europe/Berlin" +locale="de_DE.UTF-8" +suckless="git://git.hanetzok.net" + +### functions + +slinstall() { + sudo -u "$user" git clone "$suckless"/"$1" /home/"$user"/src/"$1" + cd /home/"$user"/src/"$1" + sudo -u "$user" make && make install +} + +if [ "$EUID" -ne 0 ] + then echo "Please run as root" + exit +fi + +# enable multilib repo and run system update +echo "[multilib]" >> /etc/pacman.conf +echo "Include = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf +pacman -Syu --noconfirm --needed zsh + +cp ./progs.list /tmp +cp ./aur.list /tmp +cd /tmp + +echo "Set root password..." +passwd + +# user creation +echo "Add user..." +useradd -m -G wheel -s /usr/bin/zsh $user +echo "%wheel ALL=(ALL:ALL) ALL" >> /etc/sudoers +echo "Set user password..." +passwd markus + +# timezone & locale +echo "Set timezone and locale..." +echo "$locale UTF-8" >> /etc/locale.gen +locale-gen +echo "LANG=$locale" >> /etc/locale.conf +ln -sf /usr/share/zoneinfo/"$tz" /etc/localtime + +# set hostname +echo "$hostname" > /etc/hostname + +# delete comments from progs.list +sed '/^#/d' progs.list > ./progscleared.list + +# install packages +echo "Installing packages from the official repos..." +while IFS=$'\n' read -r prog; do + echo "Installing $prog..." + pacman --noconfirm --needed -S "$prog" > /dev/null +done < ./progscleared.list + +rm ./progscleared.list + +# check if yay is already installed +if ! hash yay +then + echo "Download and install yay..." + git clone https://aur.archlinux.org/yay-bin /opt/yay-bin + chown "$user":"$user" -R /opt/yay-bin + cd /opt/yay-bin + sudo -u "$user" makepkg -si > /dev/null + cd /tmp +fi + +# install GRUB (UEFI) +echo "Install grub..." +grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB > /dev/null +grub-mkconfig -o /boot/grub/grub.cfg > /dev/null + +# set GRUB theme +git clone https://github.com/dracula/grub.git /tmp/grub +mv /tmp/grub/dracula /boot/grub/themes +echo "GRUB_THEME=/boot/grub/themes/dracula/theme.txt" >> /etc/default/grub +grub-mkconfig -o /boot/grub/grub.cfg + +# set ZDOTDIR in zshenv to keep $HOME clean(er) +echo 'export ZDOTDIR="$HOME/.config/zsh"' >> /etc/zsh/zshenv + +# disable hardware speaker bell +rmmod pcspkr +echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf + +# dotfiles +echo "Get dotfiles..." +rm -f /home/$user/.bash* +git clone git://git.hanetzok.net/dotfiles /tmp/dotfiles +cp -r /tmp/dotfiles/.* /home/$user/ +chown $user:$user -R /home/$user + +# install stuff via git +git clone "https://github.com/alexwlchan/dominant_colours.git" /tmp/dominant_colours +chown "$user":"$user" /tmp/dominant_colours && cd /tmp/dominant_colours +sudo -u "$user" rustup default stable +sudo -u "$user" cargo install --path . + +# install suckless suite +sudo -u "$user" mkdir /home/"$user"/src +slinstall dwm +slinstall st +slinstall dmenu + + +# misc +echo "auth optional pam_gnome_keyring.so">> /etc/pam.d/login +echo "session optional pam_gnome_keyring.so auto_start" >> /etc/pam.d/login + +systemctl enable NetworkManager +systemctl enable cups + +# install from AUR +clear +echo "Installing packages from the AUR - User interaction needed!" +while IFS='\n' read -r aur; do + echo "Installing $aur..." + sudo -u "$user" yay -S $prog > /dev/null +done < ./aur.list diff --git a/progs.list b/progs.list @@ -0,0 +1,88 @@ +### ESSENTIALS ### +arandr +bc +cronie +dunst +efibootmgr +fzf +git +gnome-keyring +grub +htop +keepassxc +libgnome-keyring +libnotify +lynx +maim +man-db +moreutils +networkmanager +neovim +nsxiv +ntp +openssh +ranger +rustup +ueberzug +unclutter +zsh +### INTERNET ### +firefox +thunderbird +### PRINTER SUPPORT ### +cups +hplip +system-config-printer +### GRAPHICS & VIDEO ### +gimp +imagemagick +lib32-mesa +lib32-vulkan-mesa-layers +lib32-vulkan-radeon +mesa +mpv +vulkan-radeon +xf86-video-amdgpu +### AUDIO & MUSIC ### +mpc +mpd +pipewire-pulse +pulsemixer +ncmpcpp +wireplumber +### FS UTILS ### +dosfstools +exfat-utils +ntfs-3g +ntfsprogs +nfs-utils +### OFFICE STUFF ### +libreoffice-fresh-de +poppler +zathura +zathura-pdf-mupdf +### MISC ### +atool +borg +dos2unix +fastfetch +lutris +mediainfo +rsync +### WINE ### +wine +wine-gecko +wine-mono +### XORG ### +xcape +xclip +xcompmgr +xorg-server +xorg-xdpyinfo +xorg-xev +xorg-xinit +#xorg-xsetroot +hsetroot +### FONTS ### +ttf-liberation +ttf-jetbrains-mono