Merge branch 'test' into validate-username

This commit is contained in:
Chris Titus 2021-12-31 10:14:31 -06:00 committed by GitHub
commit 1925e38601
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 417 additions and 141 deletions

3
.gitignore vendored
View File

@ -1,3 +1,4 @@
install.conf install.conf
installlog.txt installlog.txt
archnikus.code-workspace archnikus.code-workspace
setup.conf

View File

@ -8,9 +8,21 @@
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ # ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
echo "-------------------------------------------------" echo -ne "
echo "Setting up mirrors for optimal download " -------------------------------------------------------------------------
echo "-------------------------------------------------" █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
Setting up mirrors for optimal download
"
source setup.conf
iso=$(curl -4 ifconfig.co/country-iso) iso=$(curl -4 ifconfig.co/country-iso)
timedatectl set-ntp true timedatectl set-ntp true
pacman -S --noconfirm pacman-contrib terminus-font pacman -S --noconfirm pacman-contrib terminus-font
@ -18,39 +30,24 @@ setfont ter-v22b
sed -i 's/^#Para/Para/' /etc/pacman.conf sed -i 's/^#Para/Para/' /etc/pacman.conf
pacman -S --noconfirm reflector rsync grub pacman -S --noconfirm reflector rsync grub
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup
echo -e "-------------------------------------------------------------------------" echo -ne "
echo -e " █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗" -------------------------------------------------------------------------
echo -e " ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝" Setting up $iso mirrors for faster downloads
echo -e " ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗" -------------------------------------------------------------------------
echo -e " ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║" "
echo -e " ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║"
echo -e " ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝"
echo -e "-------------------------------------------------------------------------"
echo -e "-Setting up $iso mirrors for faster downloads"
echo -e "-------------------------------------------------------------------------"
reflector -a 48 -c $iso -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist reflector -a 48 -c $iso -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist
mkdir /mnt mkdir /mnt &>/dev/null # Hiding error message if any
echo -ne "
-------------------------------------------------------------------------
echo -e "\nInstalling prereqs...\n$HR" Installing Prerequisites
-------------------------------------------------------------------------
"
pacman -S --noconfirm gptfdisk btrfs-progs pacman -S --noconfirm gptfdisk btrfs-progs
echo -ne "
echo "-------------------------------------------------" -------------------------------------------------------------------------
echo "-------select your disk to format----------------" Formating Disk
echo "-------------------------------------------------" -------------------------------------------------------------------------
lsblk "
echo "Please enter disk to work on: (example /dev/sda)"
read DISK
echo "THIS WILL FORMAT AND DELETE ALL DATA ON THE DISK"
read -p "are you sure you want to continue (Y/N):" formatdisk
case $formatdisk in
y|Y|yes|Yes|YES)
echo "--------------------------------------"
echo -e "\nFormatting disk...\n$HR"
echo "--------------------------------------"
# disk prep # disk prep
sgdisk -Z ${DISK} # zap all on disk sgdisk -Z ${DISK} # zap all on disk
sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment
@ -59,35 +56,91 @@ sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment
sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # partition 1 (BIOS Boot Partition) sgdisk -n 1::+1M --typecode=1:ef02 --change-name=1:'BIOSBOOT' ${DISK} # partition 1 (BIOS Boot Partition)
sgdisk -n 2::+100M --typecode=2:ef00 --change-name=2:'EFIBOOT' ${DISK} # partition 2 (UEFI Boot Partition) sgdisk -n 2::+100M --typecode=2:ef00 --change-name=2:'EFIBOOT' ${DISK} # partition 2 (UEFI Boot Partition)
sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:'ROOT' ${DISK} # partition 3 (Root), default start, remaining sgdisk -n 3::-0 --typecode=3:8300 --change-name=3:'ROOT' ${DISK} # partition 3 (Root), default start, remaining
if [[ ! -d "/sys/firmware/efi" ]]; then if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for bios system
sgdisk -A 1:set:2 ${DISK} sgdisk -A 1:set:2 ${DISK}
fi fi
# make filesystems # make filesystems
echo -e "\nCreating Filesystems...\n$HR" echo -ne "
if [[ ${DISK} =~ "nvme" ]]; then -------------------------------------------------------------------------
mkfs.vfat -F32 -n "EFIBOOT" "${DISK}p2" Creating Filesystems
mkfs.btrfs -L "ROOT" "${DISK}p3" -f -------------------------------------------------------------------------
mount -t btrfs "${DISK}p3" /mnt "
createsubvolumes () {
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@var
btrfs subvolume create /mnt/@tmp
btrfs subvolume create /mnt/@.snapshots
}
mountallsubvol () {
mount -o noatime,compress=zstd,space_cache,commit=120,subvol=@home /dev/mapper/ROOT /mnt/home
mount -o noatime,compress=zstd,space_cache,commit=120,subvol=@tmp /dev/mapper/ROOT /mnt/tmp
mount -o noatime,compress=zstd,space_cache,commit=120,subvol=@.snapshots /dev/mapper/ROOT /mnt/.snapshots
mount -o subvol=@var /dev/mapper/ROOT /mnt/var
}
if [[ "${DISK}" == "nvme" ]]; then
if [[ "${FS}" == "btrfs" ]]; then
mkfs.vfat -F32 -n "EFIBOOT" ${DISK}p2
mkfs.btrfs -L ROOT ${DISK}p3 -f
mount -t btrfs ${DISK}p3 /mnt
elif [[ "${FS}" == "ext4" ]]; then
mkfs.vfat -F32 -n "EFIBOOT" ${DISK}p2
mkfs.ext4 -L ROOT ${DISK}p3
mount -t ext4 ${DISK}p3 /mnt
elif [[ "${FS}" == "luks" ]]; then
mkfs.vfat -F32 -n "EFIBOOT" ${DISK}p2
# enter luks password to cryptsetup and format root partition
echo -n "${luks_password}" | cryptsetup -y -v luksFormat ${DISK}p3 -
# open luks container and ROOT will be place holder
echo -n "${luks_password}" | cryptsetup open ${DISK}p3 ROOT -
# now format that container
mkfs.btrfs -L ROOT /dev/mapper/ROOT
# create subvolumes for btrfs
mount -t btrfs /dev/mapper/ROOT /mnt
createsubvolumes
umount /mnt
# mount @ subvolume
mount -o noatime,compress=zstd,space_cache,commit=120,subvol=@ /dev/mapper/ROOT /mnt
# make directories home, .snapshots, var, tmp
mkdir -p /mnt/{home,var,tmp,.snapshots}
# mount subvolumes
mountallsubvol
fi
else else
mkfs.vfat -F32 -n "EFIBOOT" "${DISK}2" if [[ "${FS}" == "btrfs" ]]; then
mkfs.btrfs -L "ROOT" "${DISK}3" -f mkfs.vfat -F32 -n "EFIBOOT" ${DISK}2
mount -t btrfs "${DISK}3" /mnt mkfs.btrfs -f -L ROOT ${DISK}3
mount -t btrfs ${DISK}3 /mnt
elif [[ "${FS}" == "ext4" ]]; then
mkfs.vfat -F32 -n "EFIBOOT" ${DISK}2
mkfs.ext4 -L ROOT ${DISK}3
mount -t ext4 ${DISK}3 /mnt
elif [[ "${FS}" == "luks" ]]; then
mkfs.vfat -F32 -n "EFIBOOT" ${DISK}2
echo -n "${luks_password}" | cryptsetup -y -v luksFormat ${DISK}3 -
echo -n "${luks_password}" | cryptsetup open ${DISK}3 ROOT -
mkfs.btrfs -L ROOT /dev/mapper/ROOT
mount -t btrfs /dev/mapper/ROOT /mnt
createsubvolumes
umount /mnt
# mount all the subvolumes
mount -o noatime,compress=zstd,space_cache,commit=120,subvol=@ /dev/mapper/ROOT /mnt
# make directories home, .snapshots, var, tmp
mkdir -p /mnt/{home,var,tmp,.snapshots}
# mount subvolumes
mountallsubvol
fi
fi fi
# checking if user selected btrfs
if [[ ${FS} =~ "btrfs" ]]; then
ls /mnt | xargs btrfs subvolume delete ls /mnt | xargs btrfs subvolume delete
btrfs subvolume create /mnt/@ btrfs subvolume create /mnt/@
umount /mnt umount /mnt
;; mount -t btrfs -o subvol=@ -L ROOT /mnt
*) fi
echo "Rebooting in 3 Seconds ..." && sleep 1
echo "Rebooting in 2 Seconds ..." && sleep 1
echo "Rebooting in 1 Second ..." && sleep 1
reboot now
;;
esac
# mount target # mount target
mount -t btrfs -o subvol=@ -L ROOT /mnt
mkdir /mnt/boot mkdir /mnt/boot
mkdir /mnt/boot/efi mkdir /mnt/boot/efi
mount -t vfat -L EFIBOOT /mnt/boot/ mount -t vfat -L EFIBOOT /mnt/boot/
@ -99,24 +152,29 @@ if ! grep -qs '/mnt' /proc/mounts; then
echo "Rebooting in 1 Second ..." && sleep 1 echo "Rebooting in 1 Second ..." && sleep 1
reboot now reboot now
fi fi
echo -ne "
echo "--------------------------------------" -------------------------------------------------------------------------
echo "-- Arch Install on Main Drive --" Arch Install on Main Drive
echo "--------------------------------------" -------------------------------------------------------------------------
"
pacstrap /mnt base base-devel linux linux-firmware vim nano sudo archlinux-keyring wget libnewt --noconfirm --needed pacstrap /mnt base base-devel linux linux-firmware vim nano sudo archlinux-keyring wget libnewt --noconfirm --needed
genfstab -U /mnt >> /mnt/etc/fstab genfstab -U /mnt >> /mnt/etc/fstab
echo "keyserver hkp://keyserver.ubuntu.com" >> /mnt/etc/pacman.d/gnupg/gpg.conf echo "keyserver hkp://keyserver.ubuntu.com" >> /mnt/etc/pacman.d/gnupg/gpg.conf
cp -R ${SCRIPT_DIR} /mnt/root/ArchTitus cp -R ${SCRIPT_DIR} /mnt/root/ArchTitus
cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist
echo "--------------------------------------" echo -ne "
echo "--GRUB BIOS Bootloader Install&Check--" -------------------------------------------------------------------------
echo "--------------------------------------" GRUB BIOS Bootloader Install & Check
-------------------------------------------------------------------------
"
if [[ ! -d "/sys/firmware/efi" ]]; then if [[ ! -d "/sys/firmware/efi" ]]; then
grub-install --boot-directory=/mnt/boot ${DISK} grub-install --boot-directory=/mnt/boot ${DISK}
fi fi
echo "--------------------------------------" echo -ne "
echo "-- Check for low memory systems <8G --" -------------------------------------------------------------------------
echo "--------------------------------------" Checking for low memory systems <8G
-------------------------------------------------------------------------
"
TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*') TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
if [[ $TOTALMEM -lt 8000000 ]]; then if [[ $TOTALMEM -lt 8000000 ]]; then
#Put swap into the actual system, not into RAM disk, otherwise there is no point in it, it'll cache RAM into RAM. So, /mnt/ everything. #Put swap into the actual system, not into RAM disk, otherwise there is no point in it, it'll cache RAM into RAM. So, /mnt/ everything.
@ -130,6 +188,8 @@ if [[ $TOTALMEM -lt 8000000 ]]; then
#The line below is written to /mnt/ but doesn't contain /mnt/, since it's just / for the sysytem itself. #The line below is written to /mnt/ but doesn't contain /mnt/, since it's just / for the sysytem itself.
echo "/opt/swap/swapfile none swap sw 0 0" >> /mnt/etc/fstab #Add swap to fstab, so it KEEPS working after installation. echo "/opt/swap/swapfile none swap sw 0 0" >> /mnt/etc/fstab #Add swap to fstab, so it KEEPS working after installation.
fi fi
echo "--------------------------------------" echo -ne "
echo "-- SYSTEM READY FOR 1-setup --" -------------------------------------------------------------------------
echo "--------------------------------------" SYSTEM READY FOR 1-setup.sh
-------------------------------------------------------------------------
"

View File

@ -1,45 +1,59 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#------------------------------------------------------------------------- echo -ne "
# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -------------------------------------------------------------------------
# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
#------------------------------------------------------------------------- ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
echo "--------------------------------------" -------------------------------------------------------------------------
echo "-- Network Setup --" Automated Arch Linux Installer
echo "--------------------------------------" -------------------------------------------------------------------------
"
source setup.conf
echo -ne "
-------------------------------------------------------------------------
Network Setup
-------------------------------------------------------------------------
"
pacman -S networkmanager dhclient --noconfirm --needed pacman -S networkmanager dhclient --noconfirm --needed
systemctl enable --now NetworkManager systemctl enable --now NetworkManager
echo "-------------------------------------------------" echo -ne "
echo "Setting up mirrors for optimal download " -------------------------------------------------------------------------
echo "-------------------------------------------------" Setting up mirrors for optimal download
-------------------------------------------------------------------------
"
pacman -S --noconfirm pacman-contrib curl pacman -S --noconfirm pacman-contrib curl
pacman -S --noconfirm reflector rsync pacman -S --noconfirm reflector rsync
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
nc=$(grep -c ^processor /proc/cpuinfo) nc=$(grep -c ^processor /proc/cpuinfo)
echo "You have " $nc" cores." echo -ne "
echo "-------------------------------------------------" -------------------------------------------------------------------------
echo "Changing the makeflags for "$nc" cores." You have " $nc" cores. And
changing the makeflags for "$nc" cores. Aswell as
changing the compression settings.
-------------------------------------------------------------------------
"
TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*') TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*')
if [[ $TOTALMEM -gt 8000000 ]]; then if [[ $TOTALMEM -gt 8000000 ]]; then
sed -i "s/#MAKEFLAGS=\"-j2\"/MAKEFLAGS=\"-j$nc\"/g" /etc/makepkg.conf sed -i "s/#MAKEFLAGS=\"-j2\"/MAKEFLAGS=\"-j$nc\"/g" /etc/makepkg.conf
echo "Changing the compression settings for "$nc" cores."
sed -i "s/COMPRESSXZ=(xz -c -z -)/COMPRESSXZ=(xz -c -T $nc -z -)/g" /etc/makepkg.conf sed -i "s/COMPRESSXZ=(xz -c -z -)/COMPRESSXZ=(xz -c -T $nc -z -)/g" /etc/makepkg.conf
fi fi
echo "-------------------------------------------------" echo -ne "
echo " Setup Language to US and set locale " -------------------------------------------------------------------------
echo "-------------------------------------------------" Setup Language to US and set locale
-------------------------------------------------------------------------
"
sed -i 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen sed -i 's/^#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
locale-gen locale-gen
timedatectl --no-ask-password set-timezone America/Chicago timedatectl --no-ask-password set-timezone ${timezone}
timedatectl --no-ask-password set-ntp 1 timedatectl --no-ask-password set-ntp 1
localectl --no-ask-password set-locale LANG="en_US.UTF-8" LC_TIME="en_US.UTF-8" localectl --no-ask-password set-locale LANG="en_US.UTF-8" LC_TIME="en_US.UTF-8"
# Set keymaps # Set keymaps
localectl --no-ask-password set-keymap us localectl --no-ask-password set-keymap ${keymap}
# Add sudo no password rights # Add sudo no password rights
sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
@ -50,14 +64,18 @@ sed -i 's/^#Para/Para/' /etc/pacman.conf
#Enable multilib #Enable multilib
sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf
pacman -Sy --noconfirm pacman -Sy --noconfirm
echo -ne "
echo -e "\nInstalling Base System\n" -------------------------------------------------------------------------
Installing Base System
-------------------------------------------------------------------------
"
sudo pacman -S --noconfirm --needed - < /pkg-files/pacman-pkgs.txt sudo pacman -S --noconfirm --needed - < /pkg-files/pacman-pkgs.txt
echo -ne "
# -------------------------------------------------------------------------
Installing Microcode
-------------------------------------------------------------------------
"
# determine processor type and install microcode # determine processor type and install microcode
#
proc_type=$(lscpu | awk '/Vendor ID:/ {print $3}') proc_type=$(lscpu | awk '/Vendor ID:/ {print $3}')
case "$proc_type" in case "$proc_type" in
GenuineIntel) GenuineIntel)
@ -70,8 +88,12 @@ case "$proc_type" in
pacman -S --noconfirm amd-ucode pacman -S --noconfirm amd-ucode
proc_ucode=amd-ucode.img proc_ucode=amd-ucode.img
;; ;;
esac esac
echo -ne "
-------------------------------------------------------------------------
Installing Graphics Drivers
-------------------------------------------------------------------------
"
# Graphics Drivers find and install # Graphics Drivers find and install
if lspci | grep -E "NVIDIA|GeForce"; then if lspci | grep -E "NVIDIA|GeForce"; then
pacman -S nvidia --noconfirm --needed pacman -S nvidia --noconfirm --needed
@ -82,7 +104,6 @@ elif lspci | grep -E "Integrated Graphics Controller"; then
pacman -S libva-intel-driver libvdpau-va-gl lib32-vulkan-intel vulkan-intel libva-intel-driver libva-utils --needed --noconfirm pacman -S libva-intel-driver libvdpau-va-gl lib32-vulkan-intel vulkan-intel libva-intel-driver libva-utils --needed --noconfirm
fi fi
echo -e "\nDone!\n"
if ! source install.conf; then if ! source install.conf; then
# Loop through user input until the user gives a valid username # Loop through user input until the user gives a valid username
while true while true
@ -124,7 +145,31 @@ then
done done
echo ${nameofmachine} > /etc/hostname echo ${nameofmachine} > /etc/hostname
echo -ne "
-------------------------------------------------------------------------
Adding User
-------------------------------------------------------------------------
"
if [ $(whoami) = "root" ]; then
useradd -m -G wheel,libvirt -s /bin/bash $username
# use chpasswd to enter $username:$password
echo "$username:$password" | chpasswd
cp -R /root/$SCRIPTHOME /home/$username/
chown -R $username: /home/$username/$SCRIPTHOME
# enter $hostname to /etc/hostname
echo $hostname > /etc/hostname
else else
echo "You are already a user proceed with aur installs" echo "You are already a user proceed with aur installs"
fi fi
if [[ ${FS} == "luks" ]]; then
# Making sure to edit mkinitcpio conf if luks is selected
# add encrypt in mkinitcpio.conf before filesystems in hooks
sed -i 's/filesystems/encrypt filesystems/g' /etc/mkinitcpio.conf
# making mkinitcpio with linux kernel
mkinitcpio -p linux
fi
echo -ne "
-------------------------------------------------------------------------
SYSTEM READY FOR 2-user.sh
-------------------------------------------------------------------------
"

View File

@ -1,17 +1,20 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#------------------------------------------------------------------------- echo -ne "
# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -------------------------------------------------------------------------
# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
#------------------------------------------------------------------------- ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
echo -e "\nINSTALLING AUR SOFTWARE\n" Installing AUR Softwares
"
# You can solve users running this script as root with this and then doing the same for the next for statement. However I will leave this up to you. # You can solve users running this script as root with this and then doing the same for the next for statement. However I will leave this up to you.
echo "CLONING: YAY"
cd ~ cd ~
git clone "https://aur.archlinux.org/yay.git" git clone "https://aur.archlinux.org/yay.git"
cd ${HOME}/yay cd ${HOME}/yay
@ -31,5 +34,9 @@ konsave -i $HOME/$SCRIPTHOME/kde.knsv
sleep 1 sleep 1
konsave -a kde konsave -a kde
echo -e "\nDone!\n" echo -ne "
-------------------------------------------------------------------------
SYSTEM READY FOR 3-post-setup.sh
-------------------------------------------------------------------------
"
exit exit

View File

@ -1,36 +1,45 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#------------------------------------------------------------------------- echo -ne "
# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -------------------------------------------------------------------------
# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
#------------------------------------------------------------------------- ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
echo -e "\nFINAL SETUP AND CONFIGURATION" Final Setup and Configurations
echo "--------------------------------------" GRUB EFI Bootloader Install & Check
echo "-- GRUB EFI Bootloader Install&Check--" "
echo "--------------------------------------"
if [[ -d "/sys/firmware/efi" ]]; then if [[ -d "/sys/firmware/efi" ]]; then
grub-install --efi-directory=/boot ${DISK} grub-install --efi-directory=/boot ${DISK}
fi fi
grub-mkconfig -o /boot/grub/grub.cfg grub-mkconfig -o /boot/grub/grub.cfg
# ------------------------------------------------------------------------ echo -ne "
-------------------------------------------------------------------------
echo -e "\nEnabling Login Display Manager" Enabling Login Display Manager
-------------------------------------------------------------------------
"
systemctl enable sddm.service systemctl enable sddm.service
echo -e "\nSetup SDDM Theme" echo -ne "
-------------------------------------------------------------------------
Setting up SDDM Theme
-------------------------------------------------------------------------
"
cat <<EOF > /etc/sddm.conf cat <<EOF > /etc/sddm.conf
[Theme] [Theme]
Current=Nordic Current=Nordic
EOF EOF
# ------------------------------------------------------------------------ echo -ne "
-------------------------------------------------------------------------
echo -e "\nEnabling essential services" Enabling Essential Services
-------------------------------------------------------------------------
"
systemctl enable cups.service systemctl enable cups.service
ntpd -qg ntpd -qg
systemctl enable ntpd.service systemctl enable ntpd.service
@ -38,10 +47,10 @@ systemctl disable dhcpcd.service
systemctl stop dhcpcd.service systemctl stop dhcpcd.service
systemctl enable NetworkManager.service systemctl enable NetworkManager.service
systemctl enable bluetooth systemctl enable bluetooth
echo " echo -ne "
############################################################################### -------------------------------------------------------------------------
# Cleaning Cleaning
############################################################################### -------------------------------------------------------------------------
" "
# Remove no password sudo rights # Remove no password sudo rights
sed -i 's/^%wheel ALL=(ALL) NOPASSWD: ALL/# %wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers sed -i 's/^%wheel ALL=(ALL) NOPASSWD: ALL/# %wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers

View File

@ -2,16 +2,37 @@
# Find the name of the folder the scripts are in # Find the name of the folder the scripts are in
export SCRIPTHOME="$(basename -- $PWD)" export SCRIPTHOME="$(basename -- $PWD)"
echo "Scripts are in dir named $SCRIPTHOME" echo -ne "
-------------------------------------------------------------------------
█████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
Scripts are in directory named $SCRIPTHOME
"
bash startup.sh
source setup.conf
bash 0-preinstall.sh bash 0-preinstall.sh
arch-chroot /mnt /root/$SCRIPTHOME/1-setup.sh arch-chroot /mnt /root/$SCRIPTHOME/1-setup.sh
source /mnt/root/$SCRIPTHOME/install.conf source /mnt/root/$SCRIPTHOME/install.conf
arch-chroot /mnt /usr/bin/runuser -u $username -- /home/$username/$SCRIPTHOME/2-user.sh arch-chroot /mnt /usr/bin/runuser -u $username -- /home/$username/$SCRIPTHOME/2-user.sh
arch-chroot /mnt /root/$SCRIPTHOME/3-post-setup.sh arch-chroot /mnt /root/$SCRIPTHOME/3-post-setup.sh
echo " echo -ne "
############################################################################### -------------------------------------------------------------------------
# Done - Please Eject Install Media and Reboot █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
############################################################################### ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
Done - Please Eject Install Media and Reboot
" "

133
startup.sh Normal file
View File

@ -0,0 +1,133 @@
#!/usr/bin/env bash
# This script will ask users about their prefrences like disk, file system,
logo () {
# This will be shown on every set as user is progressing
echo -ne "
-------------------------------------------------------------------------
█████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
------------------------------------------------------------------------
Please select presetup settings for your system
------------------------------------------------------------------------
"
}
filesystem () {
# This function will handle file systems. At this movement we are handling only
# btrfs and ext4. Others will be added in future.
echo -ne "
Please Select your file system for both boot and root
1) btrfs
2) ext4
3) luks with btrfs
0) exit
"
read FS
case $FS in
1) echo "FS=btrfs" >> setup.conf;;
2) echo "FS=ext4" >> setup.conf;;
3)
echo -ne "Please enter your luks password: "
read luks_password
echo "luks_password=$luks_password" >> setup.conf
echo "FS=luks" >> setup.conf;;
0) exit ;;
*) echo "Wrong option please select again"; filesystem;;
esac
}
timezone () {
# Added this from arch wiki https://wiki.archlinux.org/title/System_time
time_zone="$(curl --fail https://ipapi.co/timezone)"
echo -ne "System detected your timezone to be '$time_zone'"
echo -ne "Is this correct? yes/no:"
read answer
case $answer in
y|Y|yes|Yes|YES)
echo "timezone=$time_zone" >> setup.conf;;
n|N|no|NO|No)
echo "Please enter your desired timezone e.g. Europe/London :"
read new_timezone
echo "timezone=$new_timezone" >> setup.conf;;
*) echo "Wrong option. Try again";timezone;;
esac
}
keymap () {
# These are default key maps as presented in official arch repo archinstall
echo -ne "
Please select key board layout from this list
-by
-ca
-cf
-cz
-de
-dk
-es
-et
-fa
-fi
-fr
-gr
-hu
-il
-it
-lt
-lv
-mk
-nl
-no
-pl
-ro
-ru
-sg
-ua
-uk
-us
"
read -p "Your key boards layout:" keymap
echo "keymap=$keymap" >> setup.conf
}
diskpart () {
lsblk
echo -ne "
------------------------------------------------------------------------
THIS WILL FORMAT AND DELETE ALL DATA ON THE DISK
Please make sure you know what you are doing because
after formating your disk there is no way to get data back
------------------------------------------------------------------------
Please enter disk to work on: (example /dev/sda):
"
read option
echo "DISK=$option" >> setup.conf
}
userinfo () {
echo -ne "Please enter username: "
read username
echo "username=$username" >> setup.conf
echo -ne "Please enter your password: "
read password
echo "password=$password" >> setup.conf
echo -ne "Please enter your hostname: "
read hostname
echo "hostname=$hostname" >> setup.conf
}
# More features in future
# language (){}
rm -rf setup.conf &>/dev/null
userinfo
clear
logo
diskpart
clear
logo
filesystem
clear
logo
timezone
clear
logo
keymap