From 5d5666d57b94640164a9a007f221deae2ef15c87 Mon Sep 17 00:00:00 2001 From: SteveTinkers <79803804+SteveTinkers@users.noreply.github.com> Date: Thu, 18 Nov 2021 16:55:31 -0800 Subject: [PATCH] 1.0 Revised New Features --- 0-preinstall.sh | 8 +- 1-setup.sh | 73 +++++++++--------- 2-user.sh | 2 +- 3-post-setup.sh | 6 +- archtitus.sh | 4 + install.example.conf | 152 ++++++++++++++++++++++++++++++++++++- makeconf.sh | 176 +++++++++++++++++++++++++++++++++++++++++++ x-bootloader.sh | 8 +- x-mount.sh | 2 +- 9 files changed, 379 insertions(+), 52 deletions(-) create mode 100755 makeconf.sh diff --git a/0-preinstall.sh b/0-preinstall.sh index 83ab936..fba18ea 100755 --- a/0-preinstall.sh +++ b/0-preinstall.sh @@ -132,10 +132,10 @@ if [ -e "$configFileName" ] && [ ! -z "$disk" ]; then echo -e "-------------------------------------------------------------------------" if [ "$password" == "*!*CHANGEME*!*...and-dont-store-in-plantext..." ]; then while true; do - read -s -p "Password for $username: " password - echo - read -s -p "Password for $username (again): " password2 - echo + read -s -p "Password for $username: " password + echo + read -s -p "Password for $username (again): " password2 + echo if [ "$password" = "$password2" ] && [ "$password" != "" ]; then break fi diff --git a/1-setup.sh b/1-setup.sh index 0220bca..0f696b8 100755 --- a/1-setup.sh +++ b/1-setup.sh @@ -105,31 +105,30 @@ PKGS_ARCH_DEFAULT=( 'iptables-nft' # replaces iptables 'traceroute' # track route taken by packets over an IP network 'openbsd-netcat' # tcp/ip network tools -'bind' #DNS tools +'bind' # DNS tools +'gufw' # manage netfilter firewall #...MAIN TOOLS... -'cmatrix' # matix screen +'cmatrix' # matrix screen 'cronie' # schedule tasks/jobs 'htop' # see running processes 'lsof' # list open files for running Unix processes -'nano' # a famous text editor +'nano' # a famous text editor...easy for newbies, not as powerful as vim 'neofetch' # displays information about your computer -'openssh' # remote login with the SSH protocol +'openssh' # remote login another system with the SSH protocol 'os-prober' # detect other OSes on a set of drives (for grub) -'vim' # a famous text editor +'vim' # a famous text editor...hard for newbies 'wget' # get files from web -'git' # get files from web, development sync +'git' # get files from web, think github or gitlab 'bash-completion' # programmable completion for the bash shell -'zsh' # command line intrepreter +'zsh' # command line interpreter 'zsh-syntax-highlighting' 'zsh-autosuggestions' 'zsh-completions' 'pacman-contrib' # scripts and tools for pacman systems 'rsync' # sync files 'reflector' # sort and filter pacman mirror list -'snapper' # managing BTRFS and LVM snapshots tool...also installed by snap-pac and snapper-gui-git!! - # btrfs can't create snapshots of a volume that also contains a swapfile. I fixed this by moving my swapfile to its own subvolume. -'gufw' # manage netfilter firewall...added by me replacing ufw +'snapper' # managing BTRFS and LVM snapshots tool...(installed by snap-pac and snapper-gui-git as well) #...KDE... 'konsole' # KDE terminal @@ -145,7 +144,7 @@ PKGS_ARCH_DEFAULT=( 'kimageformats' # dds, xcf, exr, psd, and more formats 'kipi-plugins' # export to various online services 'kamera' # imports from gphoto2 cameras -'filelight' # KDE tool to view disk useage +'filelight' # KDE tool to view disk use 'spectacle' # KDE screenshot capture utility 'kipi-plugins' # export to various online services @@ -159,31 +158,31 @@ PKGS_ARCH_DEFAULT=( 'gimp' # Photo editing 'jdk-openjdk' # Java 17 'lutris' # gaming platform -'okular' -'qemu' -'steam' +'okular' # pdf viewer +'qemu' # a hypervisor (virtual machines) +'steam' # games 'gamemode' # gaming optimizations -'synergy' -'virt-manager' -'virt-viewer' -'wine-gecko' #why not just wine? -'wine-mono' #why not just wine? -'winetricks' #why not just wine? +'synergy' # share kebyard and mouse amung systems +'virt-manager' # another hypervisor (create virtual machines) +'virt-viewer' # another hypervisor (view virtual machines) +'wine-gecko' # Wine's built-in replacement for Microsoft's Internet Explorer...(also installs wine) +'wine-mono' # Wine's built-in replacement for Microsoft's .NET Framework...(also installs wine) +'winetricks' # makes wine better...(also installs wine) #...AUDIO/SOUND SUPPORT... -'alsa-plugins' #installed by steam +'alsa-plugins' #(installed by steam) 'alsa-utils' -'pulseaudio' #installed as part of plasma-pa +'pulseaudio' #(installed as part of plasma-pa) 'pulseaudio-alsa' 'pulseaudio-bluetooth' #...POWER/BATTERY/SUSPEND SUPPORT... -'powerdevil' # KDE tool to manage power consumption...installed as part of plasma-desktop +'powerdevil' # KDE tool to manage power consumption...(installed as part of plasma-desktop) #...BLUETOOTH SUPPORT... 'bluedevil' -'bluez' # bluetooth support...installed as part of bluedevil and powerdevil -'bluez-libs' #installed as part of networkmanager +'bluez' # bluetooth support...(installed as part of bluedevil and powerdevil) +'bluez-libs' #(installed as part of networkmanager) 'bluez-utils' #...PRINTER SUPPORT... @@ -192,28 +191,28 @@ PKGS_ARCH_DEFAULT=( #...FILESYSTEM SUPPORT... 'ntfs-3g' # NTFS support -'dosfstools' #installed by k things +'dosfstools' #(installed by kde things) 'exfat-utils' # exfat support -'btrfs-progs' #installed installed by snap-pac and snapper-gui-git MIGHT MIGHT Be installed by K! +'btrfs-progs' #(installed by snap-pac and snapper-gui-git MIGHT MIGHT Be installed by kde things) 'fuseiso' # mount ISO images #...SAMBA-WINDOWS NETWORK SHARE SUPPORT... 'samba' 'smbnetfs' -#...UNNEEDED... -'unzip' # file compression installed by other things when needed as a depenency +#...UNNEEDED to explicitly install... +'unzip' # file compression installed by other things when needed as a dependency 'zip' # file compression 'audiocd-kio' # Audio CDs 'swtpm' # small tpm emulator 'dialog' # Shows a dialog by command line 'dtc' # Device Tree Compilier (required for qemu and spike a ISA emulator) 'egl-wayland' # graphics/nvidia -'extra-cmake-modules' #I saw these get installed by some aur program, but no dep listed... -'fuse2' #installed as part of fuseiso -'fuse3' #installed as part of plasma-worksapce -'gptfdisk' #DOES CFDISK work without it? YES Installed as part of a bunch of K things -'kcoreaddons' #installed as part of a bunch of k things +'extra-cmake-modules' # installs by others things when needed as a dependency +'fuse2' #(installed as part of fuseiso) +'fuse3' #(installed as part of plasma-worksapce) +'gptfdisk' #DOES CFDISK work without it? YES (installed as part of a bunch of kde things) +'kcoreaddons' #(installed as part of a bunch of kde things) 'zeroconf-ioslave' # network Monitor for DNS-SD services for KDE 'kvantum-qt5' 'linux-firmware' @@ -223,10 +222,10 @@ PKGS_ARCH_DEFAULT=( 'python-pyqt5' #CODECS 'gst-libav' #installed as part of wine dxvk-bin I DID NOT INSTALL WINE..its DXVK-BIN -'gst-plugins-good' #installed by virt +'gst-plugins-good' #(installed by virt) 'gst-plugins-ugly' 'libdvdcss' # Portable abstraction library for DVD decryption -'kcodecs' #installed as part of a bunch of k things +'kcodecs' #(installed as part of a bunch of kde things) ) # Read config file, if it exists @@ -343,7 +342,7 @@ if [ -e "$configFileName" ] && [ ! -z "$password" ] && [ "$password" != "*!*CHAN else passwd $username if [ "$password" != "*!*CHANGEME*!*...and-dont-store-in-plantext..." ]; then - echo "password=*!*CHANGEME*!*...and-dont-store-in-plantext..." >> ${HOME}/ArchTitus/install.conf + echo "password=*!*CHANGEME*!*...and-dont-store-in-plantext..." >> $configFileName fi fi diff --git a/2-user.sh b/2-user.sh index b587025..a558353 100755 --- a/2-user.sh +++ b/2-user.sh @@ -14,7 +14,7 @@ echo "-------------------------------------------------------------------------" # Make sure these packages are installed for installing AUR manager sudo pacman -S git base-devel --noconfirm --needed -# Download and Install yay +# Download and Install yay AUR manager cd ~ git clone "https://aur.archlinux.org/yay.git" cd ${HOME}/yay diff --git a/3-post-setup.sh b/3-post-setup.sh index 5420ae3..8b56b90 100755 --- a/3-post-setup.sh +++ b/3-post-setup.sh @@ -28,7 +28,6 @@ pacman -Rsc --noconfirm "$(pacman -Qqdt)" # Enable btrfs snapshots snapper -c root create-config / - # Enable services systemctl disable dhcpcd.service systemctl stop dhcpcd.service @@ -43,12 +42,11 @@ systemctl enable bluetooth systemctl enable smb.service systemctl enable nmb.service + systemctl enable NetworkManager.service systemctl enable NetworkManager-dispatcher.service # change directory back cd $pwd -echo "-------------------------------------------------------------------------" -echo "-- Done - Please Eject Install Media and Reboot --" -echo "-------------------------------------------------------------------------" +echo "Done!" diff --git a/archtitus.sh b/archtitus.sh index 3628a85..dd3773f 100755 --- a/archtitus.sh +++ b/archtitus.sh @@ -11,3 +11,7 @@ arch-chroot /mnt /root/ArchTitus/1-setup.sh source /mnt/root/ArchTitus/install.conf #read config file arch-chroot /mnt /usr/bin/runuser -u $username -- /home/$username/ArchTitus/2-user.sh arch-chroot /mnt /root/ArchTitus/3-post-setup.sh + +echo "-------------------------------------------------------------------------" +echo "-- Done - Please Eject Install Media and Reboot --" +echo "-------------------------------------------------------------------------" diff --git a/install.example.conf b/install.example.conf index bfc10bc..bd0d683 100644 --- a/install.example.conf +++ b/install.example.conf @@ -1,4 +1,154 @@ disk=/dev/sda -hostname=host username=titus password=1234 +hostname=host + +PKGS_AUR_DEFAULT=( +'brave-bin' # Brave Browser +'dxvk-bin' # DXVK DirectX to Vulcan +'github-desktop-bin' # Github Desktop sync +'mangohud' # Gaming FPS Counter +'mangohud-common' #installs with mangohud +'zoom' # video conferences +'snap-pac' # btrfs tools...runs snapshot after every pacman install +'snapper-gui-git' # a tool of managing snapshots of Btrfs subvolumes and LVM volumes +) + +PKGS_ARCH_DEFAULT=( + +#...THEME... +'terminus-font' +'powerline-fonts' + +#...TOOLS... +'usbutils' # query connected USB devices +'ntp' # network time protocol reference implementation + +#...NETWORK TOOLS... +'bridge-utils' # configuring etnernet bridge +'iptables-nft' # replaces iptables +'traceroute' # track route taken by packets over an IP network +'openbsd-netcat' # tcp/ip network tools +'bind' # DNS tools +'gufw' # manage netfilter firewall + +#...MAIN TOOLS... +'cmatrix' # matix screen +'cronie' # schedule tasks/jobs +'htop' # see running processes +'lsof' # list open files for running Unix processes +'nano' # a famous text editor +'neofetch' # displays information about your computer +'openssh' # remote login another system with the SSH protocol +'os-prober' # detect other OSes on a set of drives (for grub) +'vim' # a famous text editor +'wget' # get files from web +'git' # get files from web, think github or gitlab +'bash-completion' # programmable completion for the bash shell +'zsh' # command line interpreter + 'zsh-syntax-highlighting' + 'zsh-autosuggestions' + 'zsh-completions' +'pacman-contrib' # scripts and tools for pacman systems +'rsync' # sync files +'reflector' # sort and filter pacman mirror list +'snapper' # managing BTRFS and LVM snapshots tool...also installed by snap-pac and snapper-gui-git + # btrfs can't create snapshots of a volume that also contains a swapfile. I fixed this by moving my swapfile to its own subvolume. + +#...KDE... +'konsole' # KDE terminal +'kate' # KDE text editor +'ark' # KDE file archive tool + 'p7zip' # 7Z format support + 'unrar' # RAR decompression support + 'unarchiver' # RAR format support + 'lzop' # LZO format support + 'lrzip' # LRZ format support +'gwenview' # KDE image viewer + 'qt5-imageformats' # tiff, webp and more formats + 'kimageformats' # dds, xcf, exr, psd, and more formats + 'kipi-plugins' # export to various online services + 'kamera' # imports from gphoto2 cameras +'filelight' # KDE tool to view disk use +'spectacle' # KDE screenshot capture utility + 'kipi-plugins' # export to various online services + +#...MISC/OTHER... +'picom' # X compositor that may fix tearing issues +'gparted' # graphical partition management +'grub-customizer' # gui to customize grub +'kitty' # terminal +'celluloid' # video players +'code' # Visual Studio code +'gimp' # Photo editing +'jdk-openjdk' # Java 17 +'lutris' # gaming platform +'okular' # pdf viewer +'qemu' # a hypervisor (virtual machines) +'steam' +'gamemode' # gaming optimizations +'synergy' # share kebyard and mouse amung systems +'virt-manager' # another hypervisor (create virtual machines) +'virt-viewer' # another hypervisor (view virtual machines) +'wine-gecko' # Wine's built-in replacement for Microsoft's Internet Explorer...(also installs wine) +'wine-mono' # Wine's built-in replacement for Microsoft's .NET Framework...(also installs wine) +'winetricks' # makes wine better...(also installs wine) + +#...AUDIO/SOUND SUPPORT... +'alsa-plugins' #(installed by steam) +'alsa-utils' +'pulseaudio' #(installed as part of plasma-pa) +'pulseaudio-alsa' +'pulseaudio-bluetooth' + +#...POWER/BATTERY/SUSPEND SUPPORT... +'powerdevil' # KDE tool to manage power consumption...(installed as part of plasma-desktop) + +#...BLUETOOTH SUPPORT... +'bluedevil' +'bluez' # bluetooth support...(installed as part of bluedevil and powerdevil) +'bluez-libs' #(installed as part of networkmanager) +'bluez-utils' + +#...PRINTER SUPPORT... +'cups' # printer support +'print-manager' # KDE tool to manage printers + +#...FILESYSTEM SUPPORT... +'ntfs-3g' # NTFS support +'dosfstools' #(installed by kde things) +'exfat-utils' # exfat support +'btrfs-progs' #(installed by snap-pac and snapper-gui-git MIGHT MIGHT Be installed by kde things) +'fuseiso' # mount ISO images + +#...SAMBA-WINDOWS NETWORK SHARE SUPPORT... +'samba' +'smbnetfs' + +#...UNNEEDED to explicitly install... +'unzip' # file compression installed by other things when needed as a dependency +'zip' # file compression +'audiocd-kio' # Audio CDs +'swtpm' # small tpm emulator +'dialog' # Shows a dialog by command line +'dtc' # Device Tree Compilier (required for qemu and spike a ISA emulator) +'egl-wayland' # graphics/nvidia +'extra-cmake-modules' # installs by others things when needed as a dependency +'fuse2' #(installed as part of fuseiso) +'fuse3' #(installed as part of plasma-worksapce) +'gptfdisk' #DOES CFDISK work without it? YES (installed as part of a bunch of kde things) +'kcoreaddons' #(installed as part of a bunch of kde things) +'zeroconf-ioslave' # network Monitor for DNS-SD services for KDE +'kvantum-qt5' +'linux-firmware' +'linux-headers' +'python-notify2' +'python-psutil' +'python-pyqt5' +#CODECS +'gst-libav' #installed as part of wine dxvk-bin I DID NOT INSTALL WINE..its DXVK-BIN +'gst-plugins-good' #(installed by virt) +'gst-plugins-ugly' +'libdvdcss' # Portable abstraction library for DVD decryption +'kcodecs' #(installed as part of a bunch of kde things) +) diff --git a/makeconf.sh b/makeconf.sh new file mode 100755 index 0000000..a2c3d27 --- /dev/null +++ b/makeconf.sh @@ -0,0 +1,176 @@ +#!/bin/bash +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" + +# Read config file, error if it exists +#configFileName=${HOME}/ArchTitus/install.conf +configFileName=$SCRIPT_DIR/install.conf +if [ -e "$configFileName" ]; then + echo "Configuration file install.conf already exists... Cannot continue." + exit +fi + + + +echo -e "-------------------------------------------------------------------------" +echo -e " █████╗ ██████╗ ██████╗██╗ ██╗████████╗██╗████████╗██╗ ██╗███████╗" +echo -e " ██╔══██╗██╔══██╗██╔════╝██║ ██║╚══██╔══╝██║╚══██╔══╝██║ ██║██╔════╝" +echo -e " ███████║██████╔╝██║ ███████║ ██║ ██║ ██║ ██║ ██║███████╗" +echo -e " ██╔══██║██╔══██╗██║ ██╔══██║ ██║ ██║ ██║ ██║ ██║╚════██║" +echo -e " ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║ ██║ ╚██████╔╝███████║" +echo -e " ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝" + + + + + echo -e "-------------------------------------------------------------------------" + echo -e " This script will make a sample config file (install.conf) you can edit " + echo -e " It will ask for disk to format, username, password, and host as well as " + echo -e " provide default package list for Arch and ARU you can modify. " + echo -e "-------------------------------------------------------------------------" + echo "" + lsblk + echo "" + echo "Above drive breakdown is from THIS MACHINE you are running this make config " + echo "script on and MIGHT NOT BE THE SAME AS THE MACHINE YOU INTEND TO INSTALL TO " + echo "Be Careful!" + echo "" + echo "Please enter disk to format: (example /dev/sda)" + read disk + disk="${disk,,}" + if [[ "${disk}" != *"/dev/"* ]]; then + disk="/dev/${disk}" + fi + echo "disk=$disk" >> $configFileName + + + + +# Get username +if [ -e "$configFileName" ] && [ ! -z "$username" ]; then + echo "Creating user - $username." +else + read -p "Please enter username:" username + echo "username=$username" >> $configFileName +fi + + + + +# if [ "$password" == "*!*CHANGEME*!*...and-dont-store-in-plantext..." ]; then + while true; do + read -s -p "Password for $username: " password + echo + read -s -p "Password for $username (again): " password2 + echo + if [ "$password" = "$password2" ] && [ "$password" != "" ]; then + break + fi + echo "Please try again" + done +# sed -i.bak "s/^\(password=\).*/\1$password/" $configFileName + echo "password=$password" >> $configFileName + + + + +# Set hostname +if [ -e "$configFileName" ] && [ ! -z "$hostname" ]; then + echo "hostname: $hostname" +else + read -p "Please name your machine:" hostname + echo "hostname=$hostname" >> $configFileName +fi +#echo $hostname > /etc/hostname + + + + +# Read default packages from scrips into array... +# This section of code is not lifted from any other scrips in this repo...custom for this need. +PKGS_ARCH_DEFAULT=() +bolReadLine=false +while IFS= read -r line; do + if [ "$line" == "PKGS_ARCH_DEFAULT=(" ]; then + bolReadLine=true + fi + if [ "$line" == ")" ]; then + bolReadLine=false + fi + if [ $bolReadLine == true ]; then + PKGS_ARCH_DEFAULT+=("$line") + fi +done < 1-setup.sh + +PKGS_AUR_DEFAULT=() +bolReadLine=false +while IFS= read -r line; do + if [ "$line" == "PKGS_AUR_DEFAULT=(" ]; then + bolReadLine=true + fi + if [ "$line" == ")" ]; then + bolReadLine=false + fi + if [ $bolReadLine == true ]; then + PKGS_AUR_DEFAULT+=("$line") + fi +done < 2-user.sh + + + + +echo "" >> $configFileName + + + + +## install default or user specified packages (if they exist) +#if [ ${#PKGS_AUR[@]} -eq 0 ]; then +# echo "installing AUR default packages" + for PKG in "${PKGS_AUR_DEFAULT[@]}"; do +# echo "INSTALLING AUR DEFAULT PACKAGE: ${PKG}" +# yay -S --noconfirm $PKG +# echo "${PKG}" + echo "${PKG}" >> $configFileName + done +#else +# echo "installing AUR user specified packages" +# for PKG in "${PKGS_AUR[@]}"; do +# echo "INSTALLING AUR USER SPECIFIED PACKAGE: ${PKG}" +# yay -S --noconfirm $PKG +# done +#fi + + + + +echo ")" >> $configFileName +echo "" >> $configFileName + + + + +## install default or user specified packages (if they exist) +#if [ ${#PKGS_ARCH[@]} -eq 0 ]; then +# echo "installing arch default packages" + for PKG in "${PKGS_ARCH_DEFAULT[@]}"; do +# echo "INSTALLING ARCH DEFAULT PACKAGE: ${PKG}" +# pacman -S "$PKG" --noconfirm --needed + echo "${PKG}" >> $configFileName + done +#else +# echo "installing arch user specified packages" +# for PKG in "${PKGS_ARCH[@]}"; do +# echo "INSTALLING ARCH USER SPECIFIED PACKAGE: ${PKG}" +# pacman -S "$PKG" --noconfirm --needed +# done +#fi + + + +echo ")" >> $configFileName + + + +echo "-------------------------------------------------------------------------" +echo "-- install.conf for $username generated" +echo "-------------------------------------------------------------------------" diff --git a/x-bootloader.sh b/x-bootloader.sh index 2678b94..8a558bc 100755 --- a/x-bootloader.sh +++ b/x-bootloader.sh @@ -12,7 +12,7 @@ if ! grep -qs '/boot ' /proc/mounts; then umount -fl /mnt ~/ArchTitus/x-mount.sh arch-chroot /mnt /root/ArchTitus/x-bootloader.sh - echo "Done. Please reboot and/or try again if needed". + echo "Done. Please reboot to see if it works now.". exit fi @@ -50,9 +50,9 @@ else echo "$grubfile doesn't exist or is empty. Is grub downloading correctly?". echo "Sometimes file wont exist, or a grub.new file is presnet in /boot/grub" echo "Other times the file will be blank and grub-mkconfig outputs nothing..." - echo "Try again or break the script here and investigate" - echo "you'll find the following commands useful to investigate" + echo "Try installing Arch again or break the script here and investigate" + echo "You'll find the following commands useful to investigate..." echo "arch-chroot /mnt" echo "grub-mkconfig -o $grubfile" - read -n 1 -s -r -p "Press any key to continue...or manually break script here." + read -n 1 -s -r -p "Your system will not boot. Press any key to continue...or manually break script here." fi diff --git a/x-mount.sh b/x-mount.sh index cd8ca70..e146e6d 100755 --- a/x-mount.sh +++ b/x-mount.sh @@ -8,7 +8,7 @@ mount -t vfat -L BOOT /mnt/boot if ! grep -qs '/mnt' /proc/mounts; then - echo "Drive did not mount correctly. Can not continue!" + echo "Drive did not mount correctly. Cannot continue!" read -n 1 -s -r -p "Press any key to reboot..." reboot now fi