diff --git a/.gitignore b/.gitignore index f1a9a1f..a20aba1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ install.conf -installlog.txt \ No newline at end of file +installlog.txt +archnikus.code-workspace +setup.conf \ No newline at end of file diff --git a/0-preinstall.sh b/0-preinstall.sh index d652d86..516edbd 100755 --- a/0-preinstall.sh +++ b/0-preinstall.sh @@ -8,9 +8,21 @@ # ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ #------------------------------------------------------------------------- SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" -echo "-------------------------------------------------" -echo "Setting up mirrors for optimal download " -echo "-------------------------------------------------" +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer +------------------------------------------------------------------------- + +Setting up mirrors for optimal download +" +source setup.conf iso=$(curl -4 ifconfig.co/country-iso) timedatectl set-ntp true pacman -S --noconfirm pacman-contrib terminus-font @@ -18,76 +30,126 @@ setfont ter-v22b sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf pacman -S --noconfirm reflector rsync grub cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup -echo -e "-------------------------------------------------------------------------" -echo -e " █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗" -echo -e " ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝" -echo -e " ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗" -echo -e " ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║" -echo -e " ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║" -echo -e " ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝" -echo -e "-------------------------------------------------------------------------" -echo -e "-Setting up $iso mirrors for faster downloads" -echo -e "-------------------------------------------------------------------------" - +echo -ne " +------------------------------------------------------------------------- + Setting up $iso mirrors for faster downloads +------------------------------------------------------------------------- +" reflector -a 48 -c $iso -f 5 -l 20 --sort rate --save /etc/pacman.d/mirrorlist -mkdir /mnt - - -echo -e "\nInstalling prereqs...\n$HR" +mkdir /mnt &>/dev/null # Hiding error message if any +echo -ne " +------------------------------------------------------------------------- + Installing Prerequisites +------------------------------------------------------------------------- +" pacman -S --noconfirm gptfdisk btrfs-progs - -echo "-------------------------------------------------" -echo "-------select your disk to format----------------" -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 "--------------------------------------" - +echo -ne " +------------------------------------------------------------------------- + Formating Disk +------------------------------------------------------------------------- +" # disk prep sgdisk -Z ${DISK} # zap all on disk sgdisk -a 2048 -o ${DISK} # new gpt disk 2048 alignment # create partitions 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::+300M --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 -if [[ ! -d "/sys/firmware/efi" ]]; then +if [[ ! -d "/sys/firmware/efi" ]]; then # Checking for bios system sgdisk -A 1:set:2 ${DISK} fi - # make filesystems -echo -e "\nCreating Filesystems...\n$HR" -if [[ ${DISK} =~ "nvme" ]]; then -mkfs.vfat -F32 -n "EFIBOOT" "${DISK}p2" -mkfs.btrfs -L "ROOT" "${DISK}p3" -f -mount -t btrfs "${DISK}p3" /mnt +echo -ne " +------------------------------------------------------------------------- + Creating Filesystems +------------------------------------------------------------------------- +" +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 ${mountoptions},subvol=@home /dev/mapper/ROOT /mnt/home + mount -o ${mountoptions},subvol=@tmp /dev/mapper/ROOT /mnt/tmp + mount -o ${mountoptions},subvol=@.snapshots /dev/mapper/ROOT /mnt/.snapshots + mount -o ${mountoptions},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 -v luksFormat ${DISK}p3 - + +# open luks container and ROOT will be place holder + echo -n "${luks_password}" | cryptsetup open ${partition3} 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 ${mountoptions},subvol=@ /dev/mapper/ROOT /mnt + +# make directories home, .snapshots, var, tmp + mkdir -p /mnt/{home,var,tmp,.snapshots} + +# store uuid of encrypted partition for grub + echo encryped_partition_uuid=$(blkid -s UUID -o value ${partition3}) >> setup.conf + + mountallsubvol + fi else -mkfs.vfat -F32 -n "EFIBOOT" "${DISK}2" -mkfs.btrfs -L "ROOT" "${DISK}3" -f -mount -t btrfs "${DISK}3" /mnt + if [[ "${FS}" == "btrfs" ]]; then + mkfs.vfat -F32 -n "EFIBOOT" ${DISK}2 + 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 -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 ${mountoptions},subvol=@ /dev/mapper/ROOT /mnt +# make directories home, .snapshots, var, tmp + mkdir -p /mnt/{home,var,tmp,.snapshots} +# mount subvolumes + mountallsubvol + fi + fi + +# checking if user selected btrfs +if [[ ${FS} =~ "btrfs" ]]; then ls /mnt | xargs btrfs subvolume delete btrfs subvolume create /mnt/@ umount /mnt -;; -*) -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 -t btrfs -o subvol=@ -L ROOT /mnt +fi # mount target -mount -t btrfs -o subvol=@ -L ROOT /mnt mkdir /mnt/boot mkdir /mnt/boot/efi mount -t vfat -L EFIBOOT /mnt/boot/ @@ -99,24 +161,29 @@ if ! grep -qs '/mnt' /proc/mounts; then echo "Rebooting in 1 Second ..." && sleep 1 reboot now fi - -echo "--------------------------------------" -echo "-- Arch Install on Main Drive --" -echo "--------------------------------------" +echo -ne " +------------------------------------------------------------------------- + Arch Install on Main Drive +------------------------------------------------------------------------- +" pacstrap /mnt base base-devel linux linux-firmware vim nano sudo archlinux-keyring wget libnewt --noconfirm --needed genfstab -U /mnt >> /mnt/etc/fstab echo "keyserver hkp://keyserver.ubuntu.com" >> /mnt/etc/pacman.d/gnupg/gpg.conf cp -R ${SCRIPT_DIR} /mnt/root/ArchTitus cp /etc/pacman.d/mirrorlist /mnt/etc/pacman.d/mirrorlist -echo "--------------------------------------" -echo "--GRUB BIOS Bootloader Install&Check--" -echo "--------------------------------------" +echo -ne " +------------------------------------------------------------------------- + GRUB BIOS Bootloader Install & Check +------------------------------------------------------------------------- +" if [[ ! -d "/sys/firmware/efi" ]]; then grub-install --boot-directory=/mnt/boot ${DISK} fi -echo "--------------------------------------" -echo "-- Check for low memory systems <8G --" -echo "--------------------------------------" +echo -ne " +------------------------------------------------------------------------- + Checking for low memory systems <8G +------------------------------------------------------------------------- +" TOTALMEM=$(cat /proc/meminfo | grep -i 'memtotal' | grep -o '[[:digit:]]*') 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. @@ -130,6 +197,8 @@ if [[ $TOTALMEM -lt 8000000 ]]; then # The line below is written to /mnt/ but doesn't contain /mnt/, since it's just / for the system itself. echo "/opt/swap/swapfile none swap sw 0 0" >> /mnt/etc/fstab # Add swap to fstab, so it KEEPS working after installation. fi -echo "--------------------------------------" -echo "-- SYSTEM READY FOR 1-setup --" -echo "--------------------------------------" +echo -ne " +------------------------------------------------------------------------- + SYSTEM READY FOR 1-setup.sh +------------------------------------------------------------------------- +" diff --git a/1-setup.sh b/1-setup.sh index 836efb6..a0aacf6 100755 --- a/1-setup.sh +++ b/1-setup.sh @@ -1,45 +1,60 @@ #!/usr/bin/env bash -#------------------------------------------------------------------------- -# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ -# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ -# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ -# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ -# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ -#------------------------------------------------------------------------- -echo "--------------------------------------" -echo "-- Network Setup --" -echo "--------------------------------------" +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer + SCRIPTHOME: ArchTitus +------------------------------------------------------------------------- +" +source /root/ArchTitus/setup.conf +echo -ne " +------------------------------------------------------------------------- + Network Setup +------------------------------------------------------------------------- +" pacman -S networkmanager dhclient --noconfirm --needed systemctl enable --now NetworkManager -echo "-------------------------------------------------" -echo "Setting up mirrors for optimal download " -echo "-------------------------------------------------" +echo -ne " +------------------------------------------------------------------------- + Setting up mirrors for optimal download +------------------------------------------------------------------------- +" pacman -S --noconfirm pacman-contrib curl pacman -S --noconfirm reflector rsync cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak nc=$(grep -c ^processor /proc/cpuinfo) -echo "You have " $nc" cores." -echo "-------------------------------------------------" -echo "Changing the makeflags for "$nc" cores." +echo -ne " +------------------------------------------------------------------------- + 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:]]*') if [[ $TOTALMEM -gt 8000000 ]]; then 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 fi -echo "-------------------------------------------------" -echo " Setup Language to US and set locale " -echo "-------------------------------------------------" +echo -ne " +------------------------------------------------------------------------- + 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 locale-gen -timedatectl --no-ask-password set-timezone America/Chicago +timedatectl --no-ask-password set-timezone ${TIMEZONE} timedatectl --no-ask-password set-ntp 1 localectl --no-ask-password set-locale LANG="en_US.UTF-8" LC_TIME="en_US.UTF-8" # Set keymaps -localectl --no-ask-password set-keymap us +localectl --no-ask-password set-keymap ${KEYMAP} # Add sudo no password rights sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers @@ -51,206 +66,117 @@ sed -i 's/^#ParallelDownloads/ParallelDownloads/' /etc/pacman.conf sed -i "/\[multilib\]/,/Include/"'s/^#//' /etc/pacman.conf pacman -Sy --noconfirm -echo -e "\nInstalling Base System\n" - -PKGS=( -'mesa' # Essential Xorg First - An open-source implementation of the OpenGL specification -'xorg' # Display Server Meta Package -'xorg-server' # Display Server -'xorg-apps' # Applications for xorg Display Server -'xorg-drivers' # Video Drivers -'xorg-xkill' # Tools to Kill X Processes -'xorg-xinit' # Program to manually start X Display Server -'xterm' # Standard Terminal Emulator -'plasma-desktop' # KDE Load second -'alsa-plugins' # Audio Plugins -'alsa-utils' # Audio Utilities -'ark' # File Compression -'audiocd-kio' # KDE Audio CD Reading -'autoconf' # A GNU tool for automatically configuring source code -'automake' # A GNU tool for automatically creating Makefiles -'base' # Minimal package set to define a basic Arch Linux installation -'bash-completion' # Tab Complete commands, filenames, variables -'bind' # DNS Server -'binutils' # A set of programs to assemble and manipulate binary and object files -'bison' # GNU Parser Generator - Compiler -'bluedevil' # Bluetooth tech for KDE -'bluez' # Bluetooth Daemons -'bluez-libs' # Deprecated libraries for the bluetooth protocol stack -'bluez-utils' # Development and debugging utilities for the bluetooth protocol stack -'breeze' # Theme for KDE Plasma -'breeze-gtk' # Widget Theme -'bridge-utils' # Utilities for configuring the Linux ethernet bridge -'btrfs-progs' # Btrfs filesystem utilities -'celluloid' # Video Player - MPV Frontend -'cmatrix' # Scrolling Lines from Matrix Movie -'code' # Visual Studio code -'cronie' # Daemon that runs specified programs at scheduled times and related tools -'cups' # Open Source Printing System -'dialog' # A tool to display dialog boxes from shell scripts -'discover' # KDE and Plasma resources management GUI -'dolphin' # Default File Manager for KDE -'dosfstools' # DOS filesystem utilities -'dtc' # Device Tree Compiler -'efibootmgr' # EFI boot -'egl-wayland' # EGLStream-based Wayland external platform - Video Driver Stuff -'exfatprogs' # Utilities for exFAT file system -'extra-cmake-modules' # Extra modules and scripts for CMake (A cross-platform open-source make system) -'filelight' # View disk usage information -'flex' # Tool for generating scanners: programs which recognize lexical patterns in text (For Compilers) -'fuse2' # A library that makes it possible to implement a filesystem in a userspace program (Filesystem in userspace) -'fuse3' # A library that makes it possible to implement a filesystem in a userspace program (Filesystem in userspace) -'fuseiso' # FUSE module to let unprivileged users mount ISO filesystem images -'gamemode' # daemon/lib combo for Linux that allows games to request a set of optimisations be temporarily applied to the host OS and/or a game process -'gcc' # GNU Compiler Collection - C and C++ frontends -'gimp' # Photo editing -'git' # Version Control System to Maintain AUR Packages -'gparted' # A Partition Magic clone, frontend to GNU Parted -'gptfdisk' # A text-mode partitioning tool that works on GUID Partition Table (GPT) disks -'grub' # GNU GRand Unified Bootloader -'grub-customizer' # A graphical grub2 settings manager -'gst-libav' # Multimedia graph framework - libav plugin -'gst-plugins-good' # Multimedia graph framework - good plugins -'gst-plugins-ugly' # Multimedia graph framework - ugly plugins -'gwenview' # Image Viewer -'haveged' # Random Number Generator -'htop' # Interactive process viewer -'iptables-nft' # Linux kernel packet control tool (using nft interface) -'jdk-openjdk' # Java 17 -'kate' # Gui Text Editor -'kcodecs' # Provide a collection of methods to manipulate strings using various encodings -KDE -'kcoreaddons' # Addons to QtCore -KDE -'kdeplasma-addons' # All kind of addons to improve your Plasma experience -'kde-gtk-config' # GTK2 and GTK3 Configurator for KDE -'kinfocenter' # A utility that provides information about a computer system -'kscreen' # KDE screen management software -'kvantum-qt5' # SVG-based theme engine for Qt5 (including config tool and extra themes) -'kitty' # OpenGL based terminal emulator with TrueColor, ligatures support, protocol extensions for keyboard input and image rendering -'konsole' # KDE terminal emulator -'layer-shell-qt' # Qt component to allow applications to make use of the Wayland wl-layer-shell protocol -'libdvdcss' # Portable abstraction library for DVD decryption -'libnewt' # Not Erik's Windowing Toolkit - text mode windowing with slang -'libtool' # A generic library support script -'linux' # The Linux kernel and modules -'linux-firmware' # Firmware files for Linux -'linux-headers' # Headers and scripts for building modules for the Linux kernel -'lsof' # Lists open files for running Unix processes -'lutris' # Open Gaming Platform -'lzop' # File Compressor very similar to gzip -'m4' # The GNU macro processor -'make' # GNU make utility to maintain groups of programs -'milou' # A dedicated search application built on top of Baloo -'nano' # Command Line Text Editor -'neofetch' # A CLI system information tool written in BASH that supports displaying images -'networkmanager' # Network connection manager and user applications -'ntfs-3g' # NTFS filesystem driver and utilities -'ntp' # Network Time Protocol reference implementation -'okular' # GUI Document Viewer -'openbsd-netcat' # TCP/IP swiss army knife. OpenBSD variant -'openssh' # SSH remote login server -'os-prober' # Utility to detect other OSes on a set of drives -'oxygen' # KDE Style -'p7zip' # Command-line file archiver with high compression ratio -'pacman-contrib' # Contributed scripts and tools for pacman systems -'patch' # A utility to apply patch files to original sources -'picom' # X compositor that may fix tearing issues -'pkgconf' # Package compiler and linker metadata toolkit -'plasma-meta' # Meta package to install KDE Plasma -'plasma-nm' # Plasma applet written in QML for managing network connections -'powerdevil' # Manages the power consumption settings of a Plasma Shell -'powerline-fonts' # patched fonts for powerline -'print-manager' # A tool for managing print jobs and printers -'pulseaudio' # A featureful, general-purpose sound server -'pulseaudio-alsa' # Advanced Linux Sound Architecture (ALSA) Configuration for PulseAudio -'pulseaudio-bluetooth' # Bluetooth support for PulseAudio -'python-notify2' # Python interface to DBus notifications -'python-psutil' # A cross-platform process and system utilities module for Python -'python-pyqt5' # A set of Python bindings for the Qt5 toolkit -'python-pip' # The PyPA recommended tool for installing Python packages -'qemu' # A generic and open source machine emulator and virtualizer -'rsync' # A fast and versatile file copying tool for remote and local files -'sddm' # QML based X11 and Wayland display manager -'sddm-kcm' # KDE Config Module for SDDM -'snapper' # A tool for managing BTRFS and LVM snapshots. It can create, diff and restore snapshots and provides timelined auto-snapping. -'spectacle' # KDE screenshot capture utility -'steam' # Valve's digital software delivery system - Games -'sudo' # Give certain users the ability to run some commands as root -'swtpm' # Libtpms-based TPM emulator with socket, character device, and Linux CUSE interface -'synergy' # Share a single mouse and keyboard between multiple computers -'systemsettings' # KDE system manager for hardware, software, and workspaces -'terminus-font' # Monospace bitmap font (for X11 and console) -'traceroute' # Tool to track the route taken by packets over an IP network -'ufw' # Uncomplicated and easy to use CLI tool for managing a netfilter firewall -'unrar' # The RAR uncompression program -'unzip' # For extracting and viewing files in .zip archives -'usbutils' # A collection of USB tools to query connected USB devices -'vim' # Vi Improved, a highly configurable, improved version of the vi text editor -'virt-manager' # Desktop user interface for managing virtual machines -'virt-viewer' # A lightweight interface for interacting with the graphical display of virtualized guest OS. -'wget' # Network utility to retrieve files from the Web -'which' # A utility to show the full path of commands -'wine-gecko' # Wine's built-in replacement for Microsoft's Internet Explorer -'wine-mono' # Wine's built-in replacement for Microsoft's .NET Framework -'winetricks' # Script to install various redistributable runtime libraries in Wine. -'xdg-desktop-portal-kde' # A backend implementation for xdg-desktop-portal using Qt/KF5 -'xdg-user-dirs' # Manage user directories like ~/Desktop and ~/Music -'zeroconf-ioslave' # Network Monitor for DNS-SD services (Zeroconf) -'zip' # Compressor/archiver for creating and modifying zipfiles -'zsh' # A very advanced and programmable command interpreter (shell) for UNIX -'zsh-syntax-highlighting' # Fish shell like syntax highlighting for Zsh -'zsh-autosuggestions' # Fish-like autosuggestions for zsh -) - -for PKG in "${PKGS[@]}"; do - echo "INSTALLING: ${PKG}" - sudo pacman -S "$PKG" --noconfirm --needed +echo -ne " +------------------------------------------------------------------------- + Installing Base System +------------------------------------------------------------------------- +" +cat /root/ArchTitus/pkg-files/pacman-pkgs.txt | while read line +do + echo "INSTALLING: ${line}" + sudo pacman -S --noconfirm --needed ${line} done - -# +echo -ne " +------------------------------------------------------------------------- + Installing Microcode +------------------------------------------------------------------------- +" # determine processor type and install microcode -# -proc_type=$(lscpu | awk '/Vendor ID:/ {print $3}') -case "$proc_type" in - GenuineIntel) - print "Installing Intel microcode" - pacman -S --noconfirm intel-ucode - proc_ucode=intel-ucode.img - ;; - AuthenticAMD) - print "Installing AMD microcode" - pacman -S --noconfirm amd-ucode - proc_ucode=amd-ucode.img - ;; -esac +proc_type=$(lscpu) +if grep -E "GenuineIntel" <<< ${proc_type}; then + echo "Installing Intel microcode" + pacman -S --noconfirm intel-ucode + proc_ucode=intel-ucode.img +elif grep -E "AuthenticAMD" <<< ${proc_type}; then + echo "Installing AMD microcode" + pacman -S --noconfirm amd-ucode + proc_ucode=amd-ucode.img +fi +echo -ne " +------------------------------------------------------------------------- + Installing Graphics Drivers +------------------------------------------------------------------------- +" # Graphics Drivers find and install -if lspci | grep -E "NVIDIA|GeForce"; then +gpu_type=$(lspci) +if grep -E "NVIDIA|GeForce" <<< ${gpu_type}; then pacman -S nvidia --noconfirm --needed nvidia-xconfig -elif lspci | grep -E "Radeon"; then +elif grep -E "Radeon" <<< ${gpu_type}; then pacman -S xf86-video-amdgpu --noconfirm --needed -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 +elif grep -E "Integrated Graphics Controller" <<< ${gpu_type}; then + pacman -S libva-intel-driver libvdpau-va-gl lib32-vulkan-intel vulkan-intel libva-intel-driver libva-utils lib32-mesa --needed --noconfirm +elif grep -E "Intel Corporation UHD" <<< ${gpu_type}; then + pacman -S libva-intel-driver libvdpau-va-gl lib32-vulkan-intel vulkan-intel libva-intel-driver libva-utils lib32-mesa --needed --noconfirm fi +#SETUP IS WRONG THIS IS RUN +if ! source /root/ArchTitus/setup.conf; then + # Loop through user input until the user gives a valid username + while true + do + read -p "Please enter username:" username + # username regex per response here https://unix.stackexchange.com/questions/157426/what-is-the-regex-to-validate-linux-users + # lowercase the username to test regex + if [[ "${username,,}" =~ ^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$ ]] + then + break + fi + echo "Incorrect username." + done +# convert name to lowercase before saving to setup.conf +echo "username=${username,,}" >> ${HOME}/ArchTitus/setup.conf -echo -e "\nDone!\n" -if ! source install.conf; then - read -p "Please enter username:" username + #Set Password + read -p "Please enter password:" password +echo "password=${password,,}" >> ${HOME}/ArchTitus/setup.conf -# Make username lowercase -username=${username,,} + # Loop through user input until the user gives a valid hostname, but allow the user to force save + while true + do + read -p "Please name your machine:" nameofmachine + # hostname regex (!!couldn't find spec for computer name!!) + if [[ "${nameofmachine,,}" =~ ^[a-z][a-z0-9_.-]{0,62}[a-z0-9]$ ]] + then + break + fi + # if validation fails allow the user to force saving of the hostname + read -p "Hostname doesn't seem correct. Do you still want to save it? (y/n)" force + if [[ "${force,,}" = "y" ]] + then + break + fi + done -echo "username=$username" >> ${HOME}/ArchTitus/install.conf + echo "nameofmachine=${nameofmachine,,}" >> ${HOME}/ArchTitus/setup.conf fi -if [ $(whoami) = "root" ]; -then - useradd -m -G wheel,libvirt -s /bin/bash $username - passwd $username - cp -R /root/ArchTitus /home/$username/ - chown -R $username: /home/$username/ArchTitus - read -p "Please name your machine:" nameofmachine +echo -ne " +------------------------------------------------------------------------- + Adding User +------------------------------------------------------------------------- +" +if [ $(whoami) = "root" ]; then + groupadd libvirt + useradd -m -G wheel,libvirt -s /bin/bash $USERNAME + +# use chpasswd to enter $username:$password + echo "$USERNAME:$PASSWORD" | chpasswd + cp -R /root/ArchTitus /home/$USERNAME/ + chown -R $USERNAME: /home/$USERNAME/ArchTitus +# enter $nameofmachine to /etc/hostname echo $nameofmachine > /etc/hostname else echo "You are already a user proceed with aur installs" 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 +------------------------------------------------------------------------- +" \ No newline at end of file diff --git a/2-user.sh b/2-user.sh index f383ac3..27dba51 100755 --- a/2-user.sh +++ b/2-user.sh @@ -1,68 +1,44 @@ #!/usr/bin/env bash -#------------------------------------------------------------------------- -# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ -# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ -# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ -# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ -# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ -#------------------------------------------------------------------------- +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer + SCRIPTHOME: ArchTitus +------------------------------------------------------------------------- -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. +source $HOME/ArchTitus/setup.conf -echo "CLONING: YAY" cd ~ git clone "https://aur.archlinux.org/yay.git" -cd ${HOME}/yay +cd ~/yay makepkg -si --noconfirm cd ~ -touch "$HOME/.cache/zshhistory" +touch "~/.cache/zshhistory" git clone "https://github.com/ChrisTitusTech/zsh" -git clone --depth=1 https://github.com/romkatv/powerlevel10k.git $HOME/powerlevel10k -ln -s "$HOME/zsh/.zshrc" $HOME/.zshrc +git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k +ln -s "~/zsh/.zshrc" ~/.zshrc -PKGS=( -'autojump' -'awesome-terminal-fonts' -'brave-bin' # Brave Browser -'dxvk-bin' # DXVK DirectX to Vulcan -'github-desktop-bin' # Github Desktop sync -'lightly-git' -'lightlyshaders-git' -'mangohud' # Gaming FPS Counter -'mangohud-common' -'nerd-fonts-fira-code' -'nordic-darker-standard-buttons-theme' -'nordic-darker-theme' -'nordic-kde-git' -'nordic-theme' -'noto-fonts-emoji' -'papirus-icon-theme' -'plasma-pa' -'ocs-url' # install packages from websites -'sddm-nordic-theme-git' -'snapper-gui-git' -'ttf-droid' -'ttf-hack' -'ttf-meslo' # Nerdfont package -'ttf-roboto' -'ttf-ms-fonts' # microsoft fonts -'ttf-vista-fonts' # vista fonts -'zoom' # video conferences -'snap-pac' -) - -for PKG in "${PKGS[@]}"; do - yay -S --noconfirm $PKG -done +yay -S --noconfirm --needed - < ~/ArchTitus/pkg-files/aur-pkgs.txt export PATH=$PATH:~/.local/bin -cp -r $HOME/ArchTitus/dotfiles/* $HOME/.config/ +cp -r ~/ArchTitus/dotfiles/* ~/.config/ pip install konsave -konsave -i $HOME/ArchTitus/kde.knsv +konsave -i ~/ArchTitus/kde.knsv sleep 1 konsave -a kde -echo -e "\nDone!\n" +echo -ne " +------------------------------------------------------------------------- + SYSTEM READY FOR 3-post-setup.sh +------------------------------------------------------------------------- +" exit diff --git a/3-post-setup.sh b/3-post-setup.sh index ba51c5d..9690617 100755 --- a/3-post-setup.sh +++ b/3-post-setup.sh @@ -1,36 +1,67 @@ #!/usr/bin/env bash -#------------------------------------------------------------------------- -# █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ -# ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ -# ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ -# ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ -# ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ -# ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ -#------------------------------------------------------------------------- +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer + SCRIPTHOME: ArchTitus +------------------------------------------------------------------------- -echo -e "\nFINAL SETUP AND CONFIGURATION" -echo "--------------------------------------" -echo "-- GRUB EFI Bootloader Install&Check--" -echo "--------------------------------------" +Final Setup and Configurations +GRUB EFI Bootloader Install & Check +" +source /root/ArchTitus/setup.conf if [[ -d "/sys/firmware/efi" ]]; then grub-install --efi-directory=/boot ${DISK} fi +# set kernel parameter for decrypting the drive +if [[ "${FS}" == "luks" ]]; then +sed -i "s%GRUB_CMDLINE_LINUX_DEFAULT=\"%GRUB_CMDLINE_LINUX_DEFAULT=\"cryptdevice=UUID=${encryped_partition_uuid}:ROOT root=/dev/mapper/ROOT %g" /etc/default/grub +fi + +echo -e "Installing CyberRe Grub theme..." +THEME_DIR="/boot/grub/themes" +THEME_NAME=CyberRe +echo -e "Creating the theme directory..." +mkdir -p "${THEME_DIR}/${THEME_NAME}" +echo -e "Copying the theme..." +cd ${HOME}/ArchTitus +cp -a ${THEME_NAME}/* ${THEME_DIR}/${THEME_NAME} +echo -e "Backing up Grub config..." +cp -an /etc/default/grub /etc/default/grub.bak +echo -e "Setting the theme as the default..." +grep "GRUB_THEME=" /etc/default/grub 2>&1 >/dev/null && sed -i '/GRUB_THEME=/d' /etc/default/grub +echo "GRUB_THEME=\"${THEME_DIR}/${THEME_NAME}/theme.txt\"" >> /etc/default/grub +echo -e "Updating grub..." grub-mkconfig -o /boot/grub/grub.cfg +echo -e "All set!" -# ------------------------------------------------------------------------ - -echo -e "\nEnabling Login Display Manager" +echo -ne " +------------------------------------------------------------------------- + Enabling Login Display Manager +------------------------------------------------------------------------- +" systemctl enable sddm.service -echo -e "\nSetup SDDM Theme" +echo -ne " +------------------------------------------------------------------------- + Setting up SDDM Theme +------------------------------------------------------------------------- +" cat < /etc/sddm.conf [Theme] Current=Nordic EOF -# ------------------------------------------------------------------------ - -echo -e "\nEnabling essential services" - +echo -ne " +------------------------------------------------------------------------- + Enabling Essential Services +------------------------------------------------------------------------- +" systemctl enable cups.service ntpd -qg systemctl enable ntpd.service @@ -38,20 +69,18 @@ systemctl disable dhcpcd.service systemctl stop dhcpcd.service systemctl enable NetworkManager.service systemctl enable bluetooth -echo " -############################################################################### -# Cleaning -############################################################################### +echo -ne " +------------------------------------------------------------------------- + Cleaning +------------------------------------------------------------------------- " # Remove no password sudo rights sed -i 's/^%wheel ALL=(ALL) NOPASSWD: ALL/# %wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers # Add sudo rights sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers +rm -r /root/ArchTitus +rm -r /home/$username/ArchTitus + # Replace in the same state cd $pwd -echo " -############################################################################### -# Done - Please Eject Install Media and Reboot -############################################################################### -" diff --git a/CyberRe/background.png b/CyberRe/background.png new file mode 100644 index 0000000..64803d9 Binary files /dev/null and b/CyberRe/background.png differ diff --git a/CyberRe/boot_menu2_c.png b/CyberRe/boot_menu2_c.png new file mode 100644 index 0000000..af67642 Binary files /dev/null and b/CyberRe/boot_menu2_c.png differ diff --git a/CyberRe/dejavu_14.pf2 b/CyberRe/dejavu_14.pf2 new file mode 100644 index 0000000..e85fe3a Binary files /dev/null and b/CyberRe/dejavu_14.pf2 differ diff --git a/CyberRe/droidlogo_bold_17.pf2 b/CyberRe/droidlogo_bold_17.pf2 new file mode 100644 index 0000000..2199357 Binary files /dev/null and b/CyberRe/droidlogo_bold_17.pf2 differ diff --git a/CyberRe/droidlogo_bold_20.pf2 b/CyberRe/droidlogo_bold_20.pf2 new file mode 100644 index 0000000..c91a693 Binary files /dev/null and b/CyberRe/droidlogo_bold_20.pf2 differ diff --git a/CyberRe/droidlogo_bold_26.pf2 b/CyberRe/droidlogo_bold_26.pf2 new file mode 100644 index 0000000..3c0d157 Binary files /dev/null and b/CyberRe/droidlogo_bold_26.pf2 differ diff --git a/CyberRe/droidlogo_regular_12.pf2 b/CyberRe/droidlogo_regular_12.pf2 new file mode 100644 index 0000000..53187f4 Binary files /dev/null and b/CyberRe/droidlogo_regular_12.pf2 differ diff --git a/CyberRe/droidlogo_regular_17.pf2 b/CyberRe/droidlogo_regular_17.pf2 new file mode 100644 index 0000000..607bcf2 Binary files /dev/null and b/CyberRe/droidlogo_regular_17.pf2 differ diff --git a/CyberRe/highlight_c.png b/CyberRe/highlight_c.png new file mode 100644 index 0000000..dc9f694 Binary files /dev/null and b/CyberRe/highlight_c.png differ diff --git a/CyberRe/highlight_w.png b/CyberRe/highlight_w.png new file mode 100644 index 0000000..e003713 Binary files /dev/null and b/CyberRe/highlight_w.png differ diff --git a/CyberRe/preview.png b/CyberRe/preview.png new file mode 100644 index 0000000..e7e5049 Binary files /dev/null and b/CyberRe/preview.png differ diff --git a/CyberRe/progress_highlight_c.png b/CyberRe/progress_highlight_c.png new file mode 100644 index 0000000..c9a4643 Binary files /dev/null and b/CyberRe/progress_highlight_c.png differ diff --git a/CyberRe/theme.txt b/CyberRe/theme.txt new file mode 100644 index 0000000..bb006f1 --- /dev/null +++ b/CyberRe/theme.txt @@ -0,0 +1,49 @@ +# Copyright (C) 2020 L. Henrique Lopes - HENK + +# general settings + title-text: "" + title-color: "#3ec6ae" + message-font: "DejaVu Sans Regular 14" + message-color: "#fd262e" + message-bg-color: "#808080" + desktop-image: "background.png" + desktop-color: "#808080" + terminal-font: "DejaVu Sans Regular 14" + + +# boot menu ++ boot_menu { + left = 28% + width = 50% + top = 22% + height = 45% + item_font = "DroidLogo Regular 17" + item_color = "#fb3048" + selected_item_font = "DroidLogo Regular 17" + selected_item_color = "#74d6cf" + icon_width = 16 + icon_height = 16 + item_height = 33 + item_padding = 20 + item_icon_space = 5 + item_spacing = 5 + menu_pixmap_style = "boot_menu2_*.png" + selected_item_pixmap_style = "highlight_*.png" +} + +# Show progress ++ progress_bar { + id = "__timeout__" + left = 0% + width = 100% + top = 99% + height = 31 + show_text = false + text = "" + fg_color = "#3daee9" + bg_color = "#31363b" + border_color = "#31363b" + highlight_style = "progress_highlight_*.png" +} + + diff --git a/README.md b/README.md index 143d5d9..ecba172 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ After unblocking the WiFi, you can connect to it. Go through these 5 steps: #4: Run `station [device name] get-networks` -#5: Find your network, and run `station [device name] connect [network name]`, enter your password and run `exit`. You can test if you have internet connection by running `ping google.com`. +#5: Find your network, and run `station [device name] connect [network name]`, enter your password and run `exit`. You can test if you have internet connection by running `ping google.com`, and then Press Ctrl and C to stop the ping test. ## Credits diff --git a/archtitus.sh b/archtitus.sh index db537b3..adb1d2d 100755 --- a/archtitus.sh +++ b/archtitus.sh @@ -1,7 +1,38 @@ #!/bin/bash +# Find the name of the folder the scripts are in + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer +------------------------------------------------------------------------- + Scripts are in directory named ArchTitus +" + bash startup.sh + source $SCRIPT_DIR/setup.conf bash 0-preinstall.sh arch-chroot /mnt /root/ArchTitus/1-setup.sh - source /mnt/root/ArchTitus/install.conf arch-chroot /mnt /usr/bin/runuser -u $username -- /home/$username/ArchTitus/2-user.sh - arch-chroot /mnt /root/ArchTitus/3-post-setup.sh \ No newline at end of file + arch-chroot /mnt /root/ArchTitus/3-post-setup.sh + +echo -ne " +------------------------------------------------------------------------- + █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗ + ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝ + ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗ + ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║ + ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║ + ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝ +------------------------------------------------------------------------- + Automated Arch Linux Installer +------------------------------------------------------------------------- + Done - Please Eject Install Media and Reboot +" \ No newline at end of file diff --git a/kderice-backup.sh b/kderice-backup.sh index dbc109f..883e40a 100755 --- a/kderice-backup.sh +++ b/kderice-backup.sh @@ -1,5 +1,5 @@ #!/bin/bash -cp -r $HOME/.config/kitty $HOME/ArchTitus/dotfiles/kitty +cp -r $HOME/.config/kitty $HOME/$SCRIPTHOME/dotfiles/kitty konsave -s kde konsave -e kde \ No newline at end of file diff --git a/kderice-restore.sh b/kderice-restore.sh index ee2b8aa..4b3a481 100755 --- a/kderice-restore.sh +++ b/kderice-restore.sh @@ -1,8 +1,8 @@ #!/bin/bash export PATH=$PATH:~/.local/bin -cp -r $HOME/ArchTitus/dotfiles/* $HOME/.config/ +cp -r $HOME/$SCRIPTHOME/dotfiles/* $HOME/.config/ pip install konsave -konsave -i $HOME/ArchTitus/kde.knsv +konsave -i $HOME/$SCRIPTHOME/kde.knsv sleep 1 konsave -a kde diff --git a/pkg-files/aur-pkgs.txt b/pkg-files/aur-pkgs.txt new file mode 100644 index 0000000..8179d7a --- /dev/null +++ b/pkg-files/aur-pkgs.txt @@ -0,0 +1,26 @@ +autojump +awesome-terminal-fonts +brave-bin +dxvk-bin +github-desktop-bin +lightly-git +lightlyshaders-git +mangohud +mangohud-common +nerd-fonts-fira-code +nordic-darker-standard-buttons-theme +nordic-darker-theme +nordic-kde-git +nordic-theme +noto-fonts-emoji +papirus-icon-theme +plasma-pa +ocs-url +sddm-nordic-theme-git +snapper-gui-git +ttf-droid +ttf-hack +ttf-meslo +ttf-roboto +zoom +snap-pac \ No newline at end of file diff --git a/pkg-files/pacman-pkgs.txt b/pkg-files/pacman-pkgs.txt new file mode 100644 index 0000000..42bf817 --- /dev/null +++ b/pkg-files/pacman-pkgs.txt @@ -0,0 +1,145 @@ +mesa +xorg +xorg-server +xorg-apps +xorg-drivers +xorg-xkill +xorg-xinit +xterm +plasma-desktop +alsa-plugins +alsa-utils +ark +audiocd-kio +autoconf +automake +base +bash-completion +bind +binutils +bison +bluedevil +bluez +bluez-libs +bluez-utils +breeze +breeze-gtk +bridge-utils +btrfs-progs +celluloid +cmatrix +code +cronie +cups +dialog +discover +dolphin +dosfstools +dtc +efibootmgr +egl-wayland +exfat-utils +extra-cmake-modules +filelight +flex +fuse2 +fuse3 +fuseiso +gamemode +gcc +gimp +git +gparted +gptfdisk +grub +grub-customizer +gst-libav +gst-plugins-good +gst-plugins-ugly +gwenview +haveged +htop +iptables-nft +jdk-openjdk +kate +kcodecs +kcoreaddons +kde-plasma-addons +kinfocenter +kscreen +kvantum-qt5 +kde-gtk-config +kitty +konsole +kscreen +layer-shell-qt +libdvdcss +libnewt +libtool +linux +linux-firmware +linux-headers +lsof +lutris +lzop +m4 +make +milou +nano +neofetch +networkmanager +ntfs-3g +ntp +okular +openbsd-netcat +openssh +os-prober +oxygen +p7zip +pacman-contrib +patch +picom +pkgconf +plasma-nm +powerdevil +powerline-fonts +print-manager +pulseaudio +pulseaudio-alsa +pulseaudio-bluetooth +python-notify2 +python-psutil +python-pyqt5 +python-pip +qemu +rsync +sddm +sddm-kcm +snapper +spectacle +steam +sudo +swtpm +synergy +systemsettings +terminus-font +traceroute +ufw +unrar +unzip +usbutils +vim +virt-manager +virt-viewer +wget +which +wine-gecko +wine-mono +winetricks +xdg-desktop-portal-kde +xdg-user-dirs +zeroconf-ioslave +zip +zsh +zsh-syntax-highlighting +zsh-autosuggestions \ No newline at end of file diff --git a/startup.sh b/startup.sh new file mode 100644 index 0000000..e497434 --- /dev/null +++ b/startup.sh @@ -0,0 +1,172 @@ +#!/usr/bin/env bash +# This script will ask users about their prefrences +# like disk, file system, timezone, keyboard layout, +# user name, password, etc. + +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" +# set up a config file +CONFIG_FILE=$SCRIPT_DIR/setup.conf +if [ ! -f $CONFIG_FILE ]; then # check if file exists + touch -f $CONFIG_FILE # create file if not exists +fi + +# set options in setup.conf +set_option() { + if grep -Eq "^${1}.*" $CONFIG_FILE; then # check if option exists + sed -i -e "/^${1}.*/d" $CONFIG_FILE # delete option if exists + fi + echo "${1}=${2}" >>$CONFIG_FILE # add option +} +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) set_option FS btrfs;; +2) set_option FS ext4;; +3) +echo -ne "Please enter your luks password: " +read -s luks_password # read password without echo +set_option luks_password $luks_password +set_option FS luks;; +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' \n" +echo -ne "Is this correct? yes/no:" +read answer +case $answer in + y|Y|yes|Yes|YES) + set_option TIMEZONE $time_zone;; + n|N|no|NO|No) + echo "Please enter your desired timezone e.g. Europe/London :" + read new_timezone + set_option TIMEZONE $new_timezone;; + *) 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 +set_option KEYMAP $keymap +} + +drivessd () { +echo -ne " +Is this an ssd? yes/no: +" +read ssd_drive + +case $ssd_drive in + y|Y|yes|Yes|YES) + echo "mountoptions=noatime,compress=zstd,ssd,commit=120" >> setup.conf;; + n|N|no|NO|No) + echo "mountoptions=noatime,compress=zstd,commit=120" >> setup.conf;; + *) echo "Wrong option. Try again";drivessd;; +esac +} + +# selection for disk type +diskpart () { +# show disks present on system +lsblk -n --output TYPE,KNAME | awk '$1=="disk"{print NR,"/dev/"$2}' # show disks with /dev/ prefix +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 full path to disk: (example /dev/sda): +" +read option +echo "DISK=$option" >> setup.conf + +drivessd +set_option DISK $option +} +userinfo () { +read -p "Please enter your username: " username +set_option USERNAME ${username,,} # convert to lower case as in issue #109 +echo -ne "Please enter your password: \n" +read -s password # read password without echo +set_option PASSWORD $password +read -rep "Please enter your hostname: " nameofmachine +set_option nameofmachine $nameofmachine +} +# More features in future +# language (){} + +# Starting functions +clear +logo +userinfo +clear +logo +diskpart +clear +logo +filesystem +clear +logo +timezone +clear +logo +keymap \ No newline at end of file