Merge pull request #161 from ChrisTitusTech/test

ArchTitus 2.0 Merge
This commit is contained in:
Chris Titus 2022-01-06 13:34:51 -06:00 committed by GitHub
commit bba2831375
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 789 additions and 364 deletions

4
.gitignore vendored
View File

@ -1,2 +1,4 @@
install.conf
installlog.txt
installlog.txt
archnikus.code-workspace
setup.conf

View File

@ -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
-------------------------------------------------------------------------
"

View File

@ -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
-------------------------------------------------------------------------
"

View File

@ -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

View File

@ -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 <<EOF > /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
###############################################################################
"

BIN
CyberRe/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
CyberRe/boot_menu2_c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
CyberRe/dejavu_14.pf2 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
CyberRe/highlight_c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
CyberRe/highlight_w.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
CyberRe/preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

49
CyberRe/theme.txt Normal file
View File

@ -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"
}

View File

@ -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

View File

@ -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
arch-chroot /mnt /root/ArchTitus/3-post-setup.sh
echo -ne "
-------------------------------------------------------------------------
█████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗
██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝
███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗
██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║
██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║
╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝
-------------------------------------------------------------------------
Automated Arch Linux Installer
-------------------------------------------------------------------------
Done - Please Eject Install Media and Reboot
"

View File

@ -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

View File

@ -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

26
pkg-files/aur-pkgs.txt Normal file
View File

@ -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

145
pkg-files/pacman-pkgs.txt Normal file
View File

@ -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

172
startup.sh Normal file
View File

@ -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