#!/bin/bash # Archinstaller - UEFI # Revision: 2023.07.03 -- by eichehome # (GNU/General Public License version 3.0) # ---------------------------------------- # Define Variables # ---------------------------------------- MYTMZ="Europe/Berlin" LCLST="de_DE" # Format is language_COUNTRY where language is lower case two letter code # and country is upper case two letter code, seperated with an underscore KEYMP="de-latin1-nodeadkeys" # ---------------------------------------- # Define Functions: # ---------------------------------------- handlerr () { clear set -uo pipefail trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR clear } invalid () { echo -e "\n" echo "Invalid answer, Please try again" sleep 2 } welcome () { clear echo "=====================================================" echo "= =" echo "= Welcome to the Archinstaller Script =" echo "= =" echo "= UEFI Edition =" echo "= Revision: 2023.07.03 =" echo "= =" echo "= Brought to you by eichehome =" echo "= https://git.sp-codes.de/eichehome/archinstall =" echo "= =" echo -e "===================================================== \n" sleep 4 } targetdrive () { clear echo -e "Check to see th available drives: \n" /bin/lsblk echo -e "\n" read -p "Type your target device (e.g. sda), be exact and press Enter: " TARGETDDRIVE [[ -z "$TARGETDDRIVE" ]] && targetdrive clear echo -e "\n" echo "Target device set to "${TARGETDDRIVE}"..." sleep 2 clear } makepartitions () { clear dd bs=512 if=/dev/zero of/dev/"${TARGETDDRIVE}" count=8192 dd bs=512 if=/dev/zero of/dev/"${TARGETDDRIVE}" count=8192 seek$((`blockdev getsz /dev/"${TARGETDDRIVE}"` - 8192)) sgdisk -og /dev/"${TARGETDDRIVE}" #Clear Patition Data and create GPT-Label sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TARGETDDRIVE}" # EFI System Partition sgdisk -n 0:0:0 -t 0:8303 -c 0:root /dev/"${TARGETDDRIVE}" # Rest der } liveconf () { clear timedatectl set-ntp true } instStd () { clear echo "Installiere Standartpakete" sleep 2 } instLXC () { clear echo "Installiere LXC" sleep 2 } instVirt () { clear echo "Installiere Virtmanager" sleep 2 } instPodman () { clear echo "Installiere Podman" sleep 2 } instWeb () { clear echo "Installiere Webserver" sleep 2 } instKubern () { clear echo "Installiere Kubernetes" sleep 2 } server () { while true do clear echo "---------------------------------" echo " Server" echo "---------------------------------" echo "" echo " 1) Standart (SSH-Server & Co)" echo " 2) LXC" echo " 3) Virtualisierung" echo " 4) Podman" echo " 5) Web" echo " 6) Kubernetes" echo "" echo " X) Exit" echo -e "\n" read -p "Please enter your choise: " choise2 case $choise2 in 1 ) instStd;; 2 ) instLXC;; 3 ) instVirt;; 4 ) instPodman;; 5 ) instWeb;; 6 ) instKubern;; x|X ) exit;; * ) invalid;; esac done } instSound () { clear echo "Installiere Soundsystem" sleep 2 } instMultimedia () { clear echo "Installiere Mutimedia Software" sleep 2 } instDevel () { clear echo "Installiere Developmentumgebung" sleep 2 } instFonts () { clear echo "Installiere Fonts" sleep 2 } instMisc () { clear echo "Installiere Verschiedenes" sleep 2 } pakete () { while true do clear echo "---------------------------------" echo " Pakete" echo "---------------------------------" echo "" echo " 1) Sound" echo " 2) Multimedia" echo " 3) Development" echo " 4) Fonts" echo " 5) Misc" echo "" echo " X) Back" echo -e "\n" read -p "Please enter your choise: " choise4 case $choise4 in 1 ) instSound;; 2 ) instMultimedia;; 3 ) instDevel;; 4 ) instFonts;; 5 ) instMisc;; x|X ) client;; * ) invalid;; esac done } instGNOME () { clear echo "Installiere GNOME" sleep 2 } instKDE () { clear echo "Installiere KDE" sleep 2 } instSway () { clear echo "Installiere Sway" sleep 2 } instWayfire () { clear echo "Installiere Wayfire" sleep 2 } desktops () { while true do clear echo "---------------------------------" echo " Desktops" echo "---------------------------------" echo "" echo " 1) GNOME" echo " 2) KDE" echo " 3) Sway" echo " 4) Wayfire" echo "" echo " X) Back" echo -e "\n" read -p "Please enter your choise: " choise4 case $choise4 in 1 ) instGNOME;; 2 ) instKDE;; 3 ) instSway;; 4 ) instWayfire;; x|X ) client;; * ) invalid;; esac done } client () { while true do clear echo "---------------------------------" echo " Client" echo "---------------------------------" echo "" echo " 1) Pakete" echo " 2) Desktops" echo "" echo " X) Exit" echo -e "\n" read -p "Please enter your choise: " choise3 case $choise3 in 1 ) pakete;; 2 ) desktops;; x|X ) exit;; * ) invalid;; esac done } configClient () { clear echo "Installiere Grundkonfiguration Client" sleep 2 client } configServer () { clear echo "Installiere Grundkonfiguration Server" sleep 2 server } ROOTUSER () { if [[ "$EUID" = 0 ]]; then continue else echo "Please run as Root" sleep 2 exit fi } start () { while true do clear echo "---------------------------------" echo " Archinstaller - UEFI Systems" echo "---------------------------------" echo "" echo " 1) Server" echo " 2) Client" echo "" echo " X) Exit" echo -e "\n" read -p "Enter your choise: " choise1 case $choise1 in 1 ) configServer;; 2 ) configClient;; x|X ) exit;; * ) invalid;; esac done } ROOTUSER handlerr welcome #liveconf start