2024-09-07 19:19:25 +00:00
|
|
|
#!/bin/bash
|
2024-09-07 21:06:46 +00:00
|
|
|
# Set mount options for disks
|
2024-09-07 21:09:21 +00:00
|
|
|
export MNTOPTIONS ="noatime,compress=zstd,ssd,commit=120"
|
2024-09-07 19:13:10 +00:00
|
|
|
echo "We just need to ask some questions before installing"
|
2024-05-23 16:49:21 +00:00
|
|
|
# Get drive values for installation
|
|
|
|
lsblk
|
|
|
|
read -p 'Please enter the drive value for the root partition, this partition will be wiped and formatted: ' rootpar
|
|
|
|
read -p 'Please enter the drive value for the EFI partition: ' efipar
|
|
|
|
# Format the root partition to ext4
|
|
|
|
mkfs.ext4 /dev/$rootpar
|
|
|
|
# Mount root partition
|
2024-09-07 21:12:13 +00:00
|
|
|
mount -o $MNTOPTIONS /dev/$rootpar /mnt
|
2024-09-07 18:52:57 +00:00
|
|
|
# Ask if the EFI partition should be wiped before mounting
|
|
|
|
read -p "Do you wish to wipe the EFI partition? If you already have an existing OS installed, say No. " yesno
|
|
|
|
case $yesno in
|
|
|
|
[yesYesYy]* )
|
|
|
|
mkfs.fat -F32 /dev/$efipar
|
|
|
|
;;
|
|
|
|
[noNoNn]* )
|
|
|
|
echo "The EFI partition will not be wiped"
|
|
|
|
;;
|
|
|
|
* ) echo "Please answer yes (Yes, y, Y) or no (No, n, N)";;
|
|
|
|
esac
|
2024-09-07 21:06:46 +00:00
|
|
|
# Ask if a home partition should be created
|
|
|
|
read -p "Do you wish to set a home partition? " yesno
|
|
|
|
case $yesno in
|
|
|
|
[yesYesYy]* )
|
|
|
|
read -p 'Please enter the drive value for the home partition, this partition will be wiped: ' homepar
|
|
|
|
mkfs.ext4 /dev/$homepar
|
|
|
|
;;
|
|
|
|
[noNoNn]* )
|
|
|
|
echo "A home partition will not be used in this installation"
|
|
|
|
;;
|
|
|
|
* ) echo "Please answer yes (Yes, y, Y) or no (No, n, N)";;
|
|
|
|
esac
|
2024-09-07 19:13:10 +00:00
|
|
|
# Get user credentials
|
|
|
|
read -p "Please enter a username " username
|
2024-09-07 19:22:07 +00:00
|
|
|
read -rsp "Please enter a password " password
|
2024-09-07 20:52:23 +00:00
|
|
|
echo -ne "\n"
|
2024-09-07 19:22:07 +00:00
|
|
|
read -rsp "Please re-enter the password " passwordconfirm
|
2024-09-07 19:13:10 +00:00
|
|
|
if [[ "$password" == "$password2" ]]; then
|
|
|
|
export USERNAME = $username
|
|
|
|
export PASSWORD = $password
|
|
|
|
echo "Credentials saved"
|
|
|
|
fi
|
|
|
|
# Run pacstrap and install base packages
|
2024-09-07 20:52:23 +00:00
|
|
|
pacstrap -i /mnt base base-devel linux linux-firmware rsync networkmanager grub efibootmgr dosfstools os-prober nano dkms dbus-broker-units mkinitcpio iptables-nft --noconfirm --needed
|
2024-09-07 21:06:46 +00:00
|
|
|
# Create the /boot/efi directory, then mount the EFI partition (and the home partition if selected)
|
2024-09-07 19:13:10 +00:00
|
|
|
mkdir /mnt/boot/efi
|
|
|
|
mount /dev/$efipar /mnt/boot/efi
|
2024-09-07 21:06:46 +00:00
|
|
|
if test -z "$homepar"; then
|
2024-09-07 21:12:13 +00:00
|
|
|
mount -o $MNTOPTIONS /dev/$homepar /mnt/home
|
2024-09-07 21:06:46 +00:00
|
|
|
fi
|
2024-05-23 16:49:21 +00:00
|
|
|
# Generate a fstab file
|
|
|
|
genfstab -U /mnt >> /mnt/etc/fstab
|
2024-09-07 20:43:00 +00:00
|
|
|
# Chroot into the new system and setup
|
2024-09-07 20:52:23 +00:00
|
|
|
arch-chroot /mnt /bin/bash <<EOF
|
2024-09-07 19:13:10 +00:00
|
|
|
sed -i 's/^#en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen
|
|
|
|
locale-gen
|
|
|
|
pacman -S --noconfirm hunspell-en_gb
|
|
|
|
ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
|
|
|
|
hwclock --systohc
|
|
|
|
echo LANG=en_GB.UTF-8 > /etc/locale.conf
|
|
|
|
echo "KEYMAP=uk" > /etc/vconsole.conf
|
2024-09-07 19:22:07 +00:00
|
|
|
echo archlinux > /etc/hostname
|
2024-09-07 21:06:46 +00:00
|
|
|
echo -e "\n127.0.0.1 localhost\n::1 localhost\n127.0.0.1 archlinux" >> /etc/hosts
|
2024-09-07 20:43:00 +00:00
|
|
|
echo -e "\n# Set terminal editor to Nano\nEDITOR=nano" >> /etc/environment
|
2024-09-07 19:58:02 +00:00
|
|
|
# Add "chaotic-aur" as a Pacman repository
|
|
|
|
pacman-key --recv-key 3056513887B78AEB --keyserver keyserver.ubuntu.com
|
|
|
|
pacman-key --lsign-key 3056513887B78AEB
|
|
|
|
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-keyring.pkg.tar.zst'
|
|
|
|
pacman -U --noconfirm 'https://cdn-mirror.chaotic.cx/chaotic-aur/chaotic-mirrorlist.pkg.tar.zst'
|
2024-09-07 20:52:23 +00:00
|
|
|
# Amend pacman.conf and run full sync to enable extra repos
|
2024-09-07 19:58:02 +00:00
|
|
|
sed -i 's/^#Color/Color\nILoveCandy/' /etc/pacman.conf
|
|
|
|
sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf
|
|
|
|
sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf
|
2024-09-07 20:43:00 +00:00
|
|
|
echo -e "\n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist" >> /etc/pacman.conf
|
2024-09-07 19:58:02 +00:00
|
|
|
pacman -Syu
|
|
|
|
# Enable NetworkManager
|
|
|
|
systemctl enable NetworkManager
|
2024-09-07 20:52:23 +00:00
|
|
|
# Install GRUB
|
2024-09-07 19:58:02 +00:00
|
|
|
echo "Installing bootloader"
|
|
|
|
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
|
|
|
|
grub-mkconfig -o /boot/grub/grub.cfg
|
2024-09-07 20:52:23 +00:00
|
|
|
# Create the standard user, add it to all neccesary groups and disable the root account
|
2024-09-07 19:58:02 +00:00
|
|
|
useradd -mG power,storage,wheel $username
|
|
|
|
echo "$username:$password" | chpasswd
|
2024-09-07 20:52:23 +00:00
|
|
|
passwd --lock root
|
2024-09-07 19:58:02 +00:00
|
|
|
# Set up sudo
|
|
|
|
sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
|
|
|
|
# Required to enable network changes
|
|
|
|
sysctl --system
|
|
|
|
# Prompt the user to reboot
|
2024-09-07 20:07:00 +00:00
|
|
|
echo "Install complete, please reboot"
|