From 5d848c7bafb6c6a747b4759517c088a1a44943b1 Mon Sep 17 00:00:00 2001 From: AngeD Date: Thu, 9 Nov 2023 11:39:12 +0100 Subject: [PATCH] feat: automate every step after mounting disk --- base.sh | 64 +++++++++++++++++++++++++++++++++++++ config | 6 ++++ gui/config | 9 +++++- gui/dwm/config | 4 +++ gui/install.sh | 2 +- install.sh | 86 ++++++++++++++------------------------------------ lib.sh | 4 +++ 7 files changed, 111 insertions(+), 64 deletions(-) create mode 100644 base.sh diff --git a/base.sh b/base.sh new file mode 100644 index 0000000..7bb516b --- /dev/null +++ b/base.sh @@ -0,0 +1,64 @@ +#!/bin/bash -e + +# System config +ln -sf "/usr/share/zoneinfo/$tz" /etc/localtime +hwclock --systohc +for l in "${locales[@]}"; do + sed -i "/^#\s*$l.UTF-8/s/^#\s*//" /etc/locale.gen +done +locale-gen +echo "LANG=$lang.UTF-8" > /etc/locale.conf +echo "$hostname" > /etc/hostname + +# Drivers +case "$(lscpu | grep Vendor)" in + *AuthenticAMD*) cpu=amd ;; + *GenuineIntel*) cpu=intel ;; +esac +sed -i '/^HOOKS=(/s/filesystems/encrypt filesystems/' /etc/mkinitcpio.conf + +# Services +pac "$cpu-ucode" +systemctl enable \ + NetworkManager \ + ip6tables \ + iptables \ + podman.socket \ + reflector.timer \ + systemd-resolved \ + systemd-timesyncd + +if ls -d /sys/class/power_supply/BAT*/ > /dev/null 2>&1; then + pac "${laptop_pkg[@]}" + systemctl enable tlp +fi + +# Users +echo "root:$root_passwd" | chpasswd +useradd -mG wheel,video "$username" -s "${default_shell-/bin/bash}" +echo "$username:$user_passwd" | chpasswd +su "$username" -c 'xdg-user-dirs-update' 2> /dev/null || true + +sed -i '/^#\s*%wheel\s\+ALL=(ALL:ALL)\s\+ALL/s/^#\s*//' /etc/sudoers + +# Bootloader +bootctl install + +root="$(findmnt -nr -o source /)" +cryptdev="$(cryptsetup status "$root" | grep device | awk '{print $2}' || true)" +if [ -n "$cryptdev" ]; then + uuid="$(blkid | grep "$cryptdev" | awk '{print $2}')" + options="cryptdevice=$uuid:$(basename "$root") " +fi + +options="${options}root=$root" + +for f in /boot/loader/entries/*.conf; do + cat << EOF >> "$f" +initrd /$cpu-ucode.img +options $options rw +EOF +done + +echo -e "${BOLD}${GREEN}DONE. You can install a desktop environment \ +(see README.md). Then, you can Ctrl+D, umount -R /mnt/ and reboot${NORMAL}" diff --git a/config b/config index 3fa6b00..23ba47f 100644 --- a/config +++ b/config @@ -1,6 +1,10 @@ # User Variables # Comment to disable +set -a + +swapfile=auto # true|MB + username=ange user_passwd=ange root_passwd=root @@ -46,4 +50,6 @@ laptop_pkg=( tlp ) +set +a + # vim: ft=sh diff --git a/gui/config b/gui/config index dd89abf..5775ff6 100644 --- a/gui/config +++ b/gui/config @@ -1,3 +1,8 @@ +# User Variables +# Comment to disable + +set -a + pkg=( alacritty dunst @@ -8,7 +13,7 @@ pkg=( keepassxc materia-{gtk-theme,kde} papirus-icon-theme gtk-engine-murrine mpv - noto-fonts{,-cjk,-emoji} ttf-{dejavu,liberation} + noto-fonts{,-cjk,-emoji} ttf-{dejavu,liberation} otf-font-awesome pcmanfm pipewire{,-pulse,-jack} wireplumber pavucontrol playerctl polkit-gnome @@ -26,4 +31,6 @@ flatpakpkg=( org.mozilla.firefox ) +set +a + # vim: ft=sh diff --git a/gui/dwm/config b/gui/dwm/config index 4ed5023..048314b 100644 --- a/gui/dwm/config +++ b/gui/dwm/config @@ -1,6 +1,8 @@ # User Variables # Comment to disable +set -a + pkg=( autorandr i3lock xss-lock @@ -8,4 +10,6 @@ pkg=( xorg-{server,xinit,xrandr,xsetroot} xclip ) +set +a + # vim: ft=sh diff --git a/gui/install.sh b/gui/install.sh index a7c379b..2fa1699 100755 --- a/gui/install.sh +++ b/gui/install.sh @@ -9,7 +9,7 @@ if [ "$EUID" != 0 ]; then fi pac "${pkg[@]}" flatpak -flatpak install "${flatpakpkg[@]}" +flatpak install -y "${flatpakpkg[@]}" case "$(lspci -k | grep -E '(VGA|3D)')" in *AMD*) diff --git a/install.sh b/install.sh index d38eba0..e2f65f0 100755 --- a/install.sh +++ b/install.sh @@ -3,67 +3,29 @@ cd "$(dirname "$0")" . ./config . ./lib.sh -# System config -cp -rfT rootfs/ / -pac "${pkg[@]}" -ln -sf "/usr/share/zoneinfo/$tz" /etc/localtime -hwclock --systohc -for l in "${locales[@]}"; do - sed -i "/^#\s*$l.UTF-8/s/^#\s*//" /etc/locale.gen -done -locale-gen -echo "LANG=$lang.UTF-8" > /etc/locale.conf -echo "$hostname" > /etc/hostname +( + case "$swapfile" in + [0-9]*) + size=$swapfile + ;; + true) + size="$(python -c "from math import ceil,log; print(2**ceil((log($swapfile)/log(2))))")" + ;; + *) + exit + ;; + esac -# Drivers -case "$(lscpu | grep Vendor)" in - *AuthenticAMD*) cpu=amd ;; - *GenuineIntel*) cpu=intel ;; -esac -sed -i '/^HOOKS=(/s/filesystems/encrypt filesystems/' /etc/mkinitcpio.conf + dd if=/dev/zero of=/mnt/swapfile bs=1M count="$swapfile" status=progress + chmod 600 /mnt/swapfile + mkswap /mnt/swapfile + swapon /mnt/swapfile +) -# Packages -pac "$cpu-ucode" -systemctl enable \ - NetworkManager \ - ip6tables \ - iptables \ - podman.socket \ - reflector.timer \ - systemd-resolved \ - systemd-timesyncd - -if ls -d /sys/class/power_supply/BAT*/ > /dev/null 2>&1; then - pac "${laptop_pkg[@]}" - systemctl enable tlp -fi - -# Users -echo "root:$root_passwd" | chpasswd -useradd -mG wheel,video "$username" -s "${default_shell-/bin/bash}" -echo "$username:$user_passwd" | chpasswd -su "$username" -c 'xdg-user-dirs-update' 2> /dev/null || true - -sed -i '/^#\s*%wheel\s\+ALL=(ALL:ALL)\s\+ALL/s/^#\s*//' /etc/sudoers - -# Bootloader -bootctl install - -root="$(findmnt -nr -o source /)" -cryptdev="$(cryptsetup status "$root" | grep device | awk '{print $2}' || true)" -if [ -n "$cryptdev" ]; then - uuid="$(blkid | grep "$cryptdev" | awk '{print $2}')" - options="cryptdevice=$uuid:$(basename "$root") " -fi - -options="${options}root=$root" - -for f in /boot/loader/entries/*.conf; do - cat << EOF >> "$f" -initrd /$cpu-ucode.img -options $options rw -EOF -done - -echo -e "${BOLD}${GREEN}DONE. You can install a desktop environment \ -(see README.md). Then, you can Ctrl+D, umount -R /mnt and reboot${NORMAL}" +cp -f rootfs/etc/pacman.conf /etc/pacman.conf +systemctl restart reflector +pacman -Sy +pacstrap -K /mnt/ "${pkg[@]}" +cp -rfT rootfs/ /mnt/ +genfstab -U /mnt >> /mnt/etc/fstab +cat base.sh | arch-chroot /mnt/ bash diff --git a/lib.sh b/lib.sh index 765c258..b860038 100644 --- a/lib.sh +++ b/lib.sh @@ -1,3 +1,5 @@ +#!/bin/bash + set -a if [ -t 1 ]; then @@ -9,3 +11,5 @@ fi function pac() { yes | pacman --needed -Syu "$@" } + +set +a