setup/scripts/0-install.sh

102 lines
4.3 KiB
Bash
Raw Normal View History

2024-09-07 19:19:25 +00:00
#!/bin/bash
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
mount /dev/$rootpar /mnt
# 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
# Get user credentials
read -p "Please enter a username " username
read -rsp "Please enter a password " password
read -rsp "Please re-enter the password " passwordconfirm
if [[ "$password" == "$password2" ]]; then
export USERNAME = $username
export PASSWORD = $password
echo "Credentials saved"
fi
# Run pacstrap and install base packages
pacstrap -i /mnt base base-devel linux linux-firmware linux-headers intel-ucode git openssh rsync networkmanager grub efibootmgr dosfstools os-prober nano dkms dbus-broker-units mkinitcpio iptables-nft
# Create the /boot/efi directory and mount the EFI partition to it
mkdir /mnt/boot/efi
mount /dev/$efipar /mnt/boot/efi
# 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
mount /dev/$homepar /mnt/home
;;
[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-05-23 16:49:21 +00:00
# Generate a fstab file
genfstab -U /mnt >> /mnt/etc/fstab
# Copy system config files into the new install
#cp files/sys-pacman.conf /mnt/etc/pacman.conf.tmp
2024-09-07 19:19:25 +00:00
#cp files/sys-locale.gen /mnt/etc/locale.gen
2024-05-23 16:49:21 +00:00
cp files/sys-environment /mnt/etc/environment
cp files/sys-grub /mnt/etc/default/grub
cp files/sys-hosts /mnt/etc/hosts
cp files/sys-network.conf /etc/sysctl.d/90-network.conf
2024-07-07 16:56:44 +00:00
cp files/sys-mkinitcpio.conf /etc/mkinitcpio.conf
2024-05-23 16:49:21 +00:00
# Create temporary directories to store files for later use
mkdir /mnt/buildscripts /mnt/userfiles
cp scripts/* /mnt/buildscripts
cp files/user-* /mnt/userfiles
# Chroot into the new system, do some setup based on earlier questions and run the next script
arch-chroot /mnt /bin/bash
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
echo archlinux > /etc/hostname
# 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'
# Amend pacman.conf
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
echo "[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist" >> /etc/pacman.conf
# Run full pacman sync to enable extra repos
pacman -Syu
# Enable NetworkManager
systemctl enable NetworkManager
# Install GRUB (this will need to be run again as the standard user in order to detect Windows)
echo "Installing bootloader"
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
# Create the standard user and add it to all neccesary groups
useradd -mG power,storage,wheel $username
echo "$username:$password" | chpasswd
# Set up sudo
sed -i 's/^# %wheel ALL=(ALL:ALL) ALL/%wheel ALL=(ALL:ALL) ALL/' /etc/sudoers
# Disable the root account
passwd --lock root
# Required to enable network changes
sysctl --system
# Prompt the user to reboot
echo "Install complete, please reboot"
#sh /buildscripts/1-root-config.sh