commit d549dec7bfca930b573e145275c43688e0eee093 Author: Kalle Struik Date: Sat May 22 10:49:31 2021 +0200 Initial commit diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..4cfe8b9 --- /dev/null +++ b/install.sh @@ -0,0 +1,121 @@ + #!/bin/sh + +echo "+===============================+" +echo "| Kalle's Arch Installer Script |" +echo "+===============================+" + +# +# Early setup +# + +# Ping my server to check network. +ping -c 1 kallestruik.nl + +# Check if the ping was successful. If it was not inform the user and exit. +if [ $? != 0 ]; then + echo "[!] You do not seem to have a network connect. Please establish one first." + echo "" + echo "[?] For wireless networks you can use the 'iwctl' command to establish a connection." + exit 1 +fi + +# Enable NTP to sync system time. +timedatectl set-ntp true + +# +# Partitioning +# + +echo "+================================+" +echo "| Partitioning |" +echo "+================================+" + +# Print a list of block devices. +lsblk -o NAME,LABEL,HOTPLUG,SIZE,MODEL + + + +echo "[?] Above is a list of block devices found on the system. Please choose the one that you want to use for this installation." +echo "[?] Or enter manual to drop to a shell for manual partitioning." +read -p "[/dev/sda,/dev/nvme0n1,manual,etc]" disk_base + +# Check for manual mode and drop them into a shell. +if [ $disk_base == "manual" ]; then + echo "[?] Make sure to also mount the full file structure under the /mnt directory." + echo "[?] Good luck! Type exit to return to the installer." + zsh +else + if [ ! -f $disk_base ]; then + echo "[!] Device $disk_base does not exist." + exit 1 + fi + + # Make sure that the user wants to erase the full disk. + read confirmation -p "[!] This will destroy all data on device $disk_base! Are you sure you want to continue? [y/N] " + + # If they are not exit. + if [ $confirmation != "y" ]; then + echo "[?] Goodbye! :)" + exit 0 + fi + + # Create a new GPT. + parted $disk_base -- mklabel gpt + + # Get the size of swap to use. + read swap_size -p "[?] How large do you want your swap to be? [GiB] " + + # Create partitions. + echo "[?] Creating partitions." + + # Create the root partition. + parted $disk_base -- mkpart primary 512MiB -"$swap_size"GiB + + # Create the swap partition. + parted $disk_base -- mkpart primary linux-swap -"$swap_size"GiB 100% + + # Create the EFI partition. + parted $disk_base -- mkpart ESP fat32 1MiB 512MiB + parted $disk_base -- set 3 esp on + + # Get the partition prefix from the user. + echo "[?] What prefix should be used for partitions? For HDDs and SATA SSDs this is probably the same as the device you selected earlier." + echo "[?] For nvme SSDs it will most likely be something like /dev/nvme0n1p" + read partition_base -p "[?] " + + # Create filesystems. + echo "[?] Creating file systems. This might take a while." + + # Create root filesystem. + mkfs.ext4 -L Arch "$partition_base"1 + # Create swap. + mkswap -L swap "$partition_base"2 + # Create EFI filesystem. + mkfs.fat -F 32 -n boot "$partition_base"3 + + # Mount filesystems. + mount "$partition_base"1 /mnt + mkdir -p /mnt/boot + mount "$partition_base"3 /mnt/boot + + # And turn on swap + swapon "$partition_base"2 +fi + +# +# Package installation +# + +echo "[?] Installing packages using pacstrap. This will take quite a bit of time." +echo "[?] Go get a cup of thee or something." + +sleep 5 + +# Use pacstrap to install all packages from the packages file. +pacstrap /mnt ${cat packages} + +echo "[?] Package installation done. Generating /etc/fstab now." + +# Generate fstab. +genfstab -U /mnt >> /mnt/etc/fstab + diff --git a/packages b/packages new file mode 100644 index 0000000..2c0d968 --- /dev/null +++ b/packages @@ -0,0 +1,3 @@ +base +linux-zen +linux-firmware \ No newline at end of file