Upload files to "/"

This commit is contained in:
Martin Dvořák 2026-04-28 23:32:38 +02:00
commit d6a47370d7
151 changed files with 10154 additions and 0 deletions

731
usr/local/bin/ezarch.bios Normal file
View file

@ -0,0 +1,731 @@
#!/bin/bash
# EZ Arch Installer - BIOS
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/4RCH/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the 4RCH Installer Script ="
echo "= ="
echo "= BIOS Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by M4DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=i386-pc /dev/"${TRGTDRV}"
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - BIOS Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

738
usr/local/bin/ezarch.uefi Normal file
View file

@ -0,0 +1,738 @@
#!/bin/bash
# EZ Arch Installer - UEFI
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
clear
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the 4RCH Installer Script ="
echo "= ="
echo "= UEFI Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by M4DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.fat -F32 /dev/"${TRGTDRV}"\1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.fat -F32 /dev/"${TRGTDRV}"\p1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\p1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - UEFI Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

206
usr/local/bin/ezmaint Normal file
View file

@ -0,0 +1,206 @@
#!/bin/bash
# 4RCH maintenance
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerror () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcomer () {
clear
echo "==================================================="
echo "= ="
echo "= 4RCH Maintenance Script ="
echo "= ="
echo "= ="
echo "= Version 2.3 (Release) ="
echo "= ="
echo "= Brought to you by M3DEV ="
echo "= https://github.com/M4RT1NDEV/4rch-linux ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
failedsrvs () {
clear
systemctl --failed > /tmp/failedsrvs
nano /tmp/failedsrvs
clear
echo -e "\n"
rm /tmp/failedsrvs
clear
}
journalchk () {
clear
journalctl -p 3 -xb > /tmp/journalchk
nano /tmp/journalchk
clear
echo -e "\n"
rm /tmp/journalchk
clear
}
journalcln () {
clear
journalctl --vacuum-time=2weeks
clear
echo -e "\n"
echo "Journal directory cleaned"
sleep 2
clear
}
sysupdate () {
clear
pacman -Syu
clear
echo -e "\n"
echo "Full system upgrade finished"
sleep 2
clear
}
pkgsccache () {
clear
pacman -Scc
clear
echo -e "\n"
echo "Package cache cleaned"
sleep 2
clear
}
keysreset () {
clear
rm /var/lib/pacman/sync/*
rm -rf /etc/pacman.d/gnupg/*
pacman-key --init
pacman-key --populate
pacman -S --noconfirm archlinux-keyring
clear
echo -e "\n"
echo "All pacman keys are reset"
sleep 2
clear
}
usercachecln () {
clear
echo "[Unit]
Description=Clean primary user cache on boot.
[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
echo "#!/bin/bash
rm -r /home/*/.cache/*
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
chmod +x /usr/local/bin/clnusercache.sh
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
clear
echo -e "\n"
echo "User's cache directory cleaned on next boot"
sleep 3
clear
}
runreflector () {
clear
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
clear
echo -e "\n"
echo "Mirrorlist regenerated"
sleep 2
clear
}
enfirewall () {
clear
systemctl enable firewalld.service
systemctl start firewalld.service
clear
echo "Firewalld Service is enabled"
sleep 2
clear
}
mainmenu () { while true
do
clear
echo "-------------------------------------"
echo " 4RCH Maintenance Script"
echo "-------------------------------------"
echo ""
echo " 1) Failed systemd services"
echo " 2) Check journal logs"
echo " 3) Cleanup journal space"
echo " 4) Run system update"
echo " 5) Clean package cache"
echo " 6) Reset all pacman keys"
echo " 7) Clean user cache on next boot"
echo " 8) Regenerate mirrorlist"
echo " 9) Enable Firewalld Service"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " optionA
case $optionA in
1 ) failedsrvs ;;
2 ) journalchk ;;
3 ) journalcln ;;
4 ) sysupdate ;;
5 ) pkgsccache ;;
6 ) keysreset ;;
7 ) usercachecln ;;
8 ) runreflector ;;
9 ) enfirewall ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerror
welcomer
mainmenu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

View file

@ -0,0 +1,13 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=4RCH Maint Tool
Comment=4rch tool
Categories=System;
Keywords=System;
Exec=pkexec /usr/local/bin/ezmaint
Icon=/usr/share/icons/default/lava-lamp.png
Path=/usr/local/bin
Terminal=true
StartupNotify=false
Name=4rch

View file

@ -0,0 +1,37 @@
Managing the package cache
check how many cached packages are available in my cache folder.
$ sudo ls /var/cache/pacman/pkg/ | wc -l
check the total disk space used by the cache folder.
$ du -sh /var/cache/pacman/pkg/
Automatically clean the package cache using pacman hooks.
To do so, create a file /etc/pacman.d/hooks/clean_package_cache.hook:
$ sudo mkdir /etc/pacman.d/hooks
$ sudo nano /etc/pacman.d/hooks/clean_package_cache.hook
Add the following lines:
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Cleaning pacman cache...
When = PostTransaction
Exec = /usr/bin/paccache -rk 1
Save and close the file.
From now on, the package cache will be cleaned automatically after every pacman transactions (like upgrade, install, remove).
You don’t have to run paccache command manually every time.
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,188 @@
ezarch Installation HowTo
The ezarch installation scripts are simple, menu driven, Arch installation scripts written in BASH. It does require root privilege to run. Both ezarch.bios and ezarch.uefi operate in nearly identical fashion, the only difference being the type of system you wish to install to, namely legacy BIOS or UEFI. For the purposes of this HowTo, the ezarch.uefi script will be used in the examples. All the interactive steps in both scripts are the same.
Before starting the installation script, there are some variables to set to determine the time zone, locale, and keyboard layout. The defaults are:
MYTMZ="America/Phoenix"
List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
Format is language_COUNTRY where language is lower case two letter code and country is upper case two letter code, separated with an underscore.
KEYMP="us"
Use lower case two letter country code.
If you want to specify other, copy the script to the home folder so it is writable and edit the script in your favorite editor. You can change the time zone, locale, and keyboard layout to whatever you require. Save the script and run the copy you have saved. Otherwise, if you are fine with the defaults, run the unedited copy of the script.
Open a terminal in the /home/live/ezarcher/Scripts folder and type the following:
Use su to get a root login ( password is: toor ) and then type:
a. bash ezarch.uefi
b. ./ezarch.uefi
Once the script launches, you will see the splash screen for 3 seconds and then this menu:
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Enter your choice:
Step 1) Username, Passwords, & Hostname allows you to set those options. All items MUST be set for the script to function correctly. The script will ask you to type your answers and press [Enter]. The script will echo what you type to the screen so you can verify it is what you intend. Be precise when typing your responses. Username must be all in lowercase with no spaces or special characters.
Step 2) Choose Device Type & Partition Drive will walk you through selecting the desired drive (SATA or NVMe is your first choice). This is a destructive step as the drive you select will be wiped and formatted during this process. Please proceed with caution and know what you are doing. Please make backups of all important data BEFORE you begin your installation. If you need to do so, exit the script at this point and do your backups. You can always start the script from the beginning again. Do not attempt to resume the installation script from the place you left off as none of the selections you made during the first run of the installation script will be retained. You have been warned!
The drive partitioning steps perform a predetermined partition layout. The drive you select will be converted to the GPT partitioning scheme. The drive will be partitioned to contain an ESP partition, a root partition, a home partition, and, a swap partition. You will be presented a choice in size options for your root and swap partitions. The remaining space will be assigned to the home partition. All data partitions are formatted EXT4.
If you do not like this partitioning layout, you have a couple options. First, is to edit the ezach.uefi script beforehand and change the relevant sections of code. This is very much discouraged, but entirely possible (and your choice). Second, you can create, format, and, mount the partition yourself BEFORE you start the installation.
There are several partitioning tools available on the system: gdisk, cgdisk, cfdisk, parted, gparted. You can use whichever tool you prefer to partition your dive and partition your drive exactly how you wish. Once the partitioning is complete, you will need to format the partitions you created. After formatting the partitions, you will need to mount them beginning with the partition to contain the root of the filesystem.
As an example, I will show the steps to format and mount a simple partition layout. Assuming you have created an ESP partition on /dev/sda1 and a root partition on /dev/sda2 and a swap partition on /dev/sda3 - the formatting will go like this:
# mkfs.fat -F32 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkswap /dev/sda3
Then you will need to mount the partitions:
# mount /dev/sda2 /mnt
# mkdir /mnt/efi
# mount /dev/sda1 /mnt/efi
# swapon /dev/sda3
Always mount your the device which is intended to be your root filesystem FIRST! Then create your mount points for any additional partitions. In this case we have our ESP partition on /dev/sda1 and that gets mounted after the mount point is created. The GRUB will assume the mount point for the ESP is /efi - so make sure to use that mount point when mounting your ESP partition. Last, we can turn the swap device on. If you wish to use a swap file, then please look up how to do that. The live system has Firefox, so any information is at your disposal during installation.
After your partitions are created, formatted, and mounted, you can start the ezarch.uefi installation script. It is important to remember to use the Option 3) to tell the installation script which device to use during the installation. When you select Option 3) choose the type of disk you are working with and get to this menu:
--------------------------------
Partition Drive
--------------------------------
1) Enter device name (e.g.sda)
2) Choose Swap partition size
3) Choose Root partition size
** Remaining space will be /home **
4) Create partitions
5) Format partitions (ext4)
6) Mount partitions
R) Return to menu
Please enter your choice:
At this menu, select Option 1) Enter device name (e.g. sda) and type the device's name without any partition numbers. Valid choices for SATA disks would be sda, sdb, sdc, etc. Valid choices for NVMe disks would be nvme0n1, nvme0n2, nvme1n1, nvme1n2, etc. As soon as you have typed the device name and pressed [Enter], you should be back at this menu, press Option R) to return to the Main Menu and continue with Option 3) Install Base System (pacstrap).
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Steps 3) and 4) are not interactive, you simply select them to run and perform the required installation steps. Whether you have used the ezarch.uefi script to perform the partitioning, or did those steps yourself before starting the ezarch.uefi script, the remainder of the script will function as intended.
Step 5) Install Broad Categories of Software will present several categories of pre-selected software. If you open the ezarch.uefi install script in a text editor, you can examine the software listed in each category and desktop section in the install script. You can edit the software package lists in the categories and desktop sections to suit your needs. Here is the menu:
--------------------------------
Install Software Categories
--------------------------------
1) Xorg
2) General
3) Multimedia
4) Networking
5) Fonts
6) Printing support
7) Calamares dependencies
R) Return to menu
Please enter your choice:
Option 1) Xorg: needed for a graphical interface and any of the desktop environments.
Option 2) General: necessary packages commonly used and applicable to any desktop environment.
Option 3) Multimedia: codecs, audio, video, sound system, etc.
Option 4) Networking: web browser, networkmanager, wifi drivers, samba, etc.
Option 5) Fonts: commonly used font packages.
Option 6) Printing support: cups, system configure printer, hplip, simple-scan, etc
Option 7) Calamares dependencies: needed to build Calamares
I have selected all the packages to work together as a whole. Please consider installing categories 1-5 as mandatory. Printing support is truly optional and its absence will not affect the system. All other categories work together. It is possible to skip categories, but the resulting desktop will be incomplete.
If you want a very basic system to configure just the way you wish, you can elect to choose none of these options and continue on directly to Step 8) Install GRUB - leaving you with a bare command line system to build up yourself.
Otherwise, if you have installed some or all of the categories, you can proceed to Step 6) Choose Desktop:
--------------------------------
Choose A Desktop
--------------------------------
1) LXQt
2) Plasma
3) XFCE
4) Mate
5) Cinnamon
6) Gnome
R) Return to menu
Please enter your choice:
The above six desktop environment options will install vanilla configurations. No theme or style choices have been applied beyond those set by the respective developers. It is up to you to style your desktop to your liking. Some of the packages included with the various desktop environment options will include packages like: arc-gtk-theme, adapta-gtk-theme, paprius-icon-theme, breeze-icon-theme, etc. So you will have a few basic options out of the box. Most desktops come with a few standard wallpapers as well. Anything beyond the default theme and icon choices will require you to install and configure what you wish.
The final, and mandatory last Step 7) Install GRUB:
-------------------------------------
EZ Arch Installer - UEFI Systems
-------------------------------------
1) Username, Passwords, & Hostname
2) Choose Device Type & Partition Drive
3) Install Base System (pacstrap)
4) Configure System Settings
5) Install Broad Categories of Software
6) Choose Desktop
7) Install GRUB
X) Exit
Enter your choice:
This step is needed to install a boot loader on your system and make the system bootable. After GRUB is installed, you should select X) and reboot your system. Enjoy. :-)
----------------------------
ezarch-install-howto.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,104 @@
The ezmaint script attempts to collect various common maintenance tasks that help keep an Arch based system healthy and lean. Below is the menu of the script and the individual functions that perform the actions.
-------------------------------------
EZArcher Maintenance Script
-------------------------------------
1) Failed systemd services
2) Check journal logs
3) Cleanup journal space
4) Run system update
5) Clean package cache
6) Reset all pacman keys
7) Cleanup user cache folder
8) Regenerate mirrorlist
9) Enable Firewalld Service
X) Exit
Enter your choice:
1. Failed systemd services:
systemctl --failed > /tmp/failedsrvs
nano /tmp/failedsrvs
These commands list any failed systemd services and pipe the output into a temporary file that is opened in the nano editor for your viewing. If all output looks OK, closing the nano editor with Ctl+X will return to the main menu. If there are issues, you can copy and paste the suspect lines into a search engine for further review and take appropriate action.
2. Check journal logs:
journalctl -p 3 -xb > /tmp/journalchk
nano /tmp/journalchk
These commands list any journal entries and pipe the output into a temporary file that is opened in the nano editor for your viewing. If all output looks OK, closing the nano editor with Ctl+X will return to the main menu. If there are issues, you can copy and paste the suspect lines into a search engine for further review and take appropriate action.
3. Cleanup journal space:
journalctl --vacuum-time=2weeks
This command will removed any journal logs older than two weeks and free up space.
4. Run system update:
pacman -Syu
This command will perform a full system upgrade.
5. Clean package cache:
pacman -Scc
This command will perform an aggressive cleaning of the package cache and ask to remove all package cache contents for poth installed and uninstalled packages. If you wish to roll-back packages, this option should not be used.
6. Reset all pacman keys:
rm /var/lib/pacman/sync/*
rm -rf /etc/pacman.d/gnupg/*
pacman-key --init
pacman-key --populate
pacman -S --noconfirm archlinux-keyring
Thes commands will clear the old GNUPG keyring files and will initialize, populate, and reinstall the archlinux keyring
7. Cleanup user cache folder:
echo "[Unit]
Description=Clean primary user cache on boot.
[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
echo "#!/bin/bash
rm -r /home/*/.cache/*
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
chmod +x /usr/local/bin/clnusercache.sh
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
This option will create a systemd unit to delete all contents of the user's .cache folder upon the next reboot and then remove the systemd. The .cache folder typically contains temporary working files of the desktop and user programs. The contents of the .cache folder can be examined by opening the file manager and viewing hidden files inside the user's home folder in the .cache folder. Please review the files to be deleted before using this option if you are concerned or just curious.
8. Regenerate mirrorlist:
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
This command runs reflector and generates a new mirrorlist file based on the options specified in the command. My defaults are to select the recently updated within the last six hours that are hosted on https servers in the United States. Please look at the man page for reflector if you want to change the options.
9. Enable Firewalld Service:
systemctl enable firewalld.service
systemctl start firewalld.service
These commands enable and start the Firewalld service.
I hope these various functions come in handy. I must give credit to EF Tech Made Simple for his inspiration in the choice and implementation of these functions. Please view his video describing these maintenance tips here: https://youtu.be/wwSkFi3h2nI
ezmaint-howto.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,18 @@
Getting started building with ARCHISO:
Archiso dependencies:
archiso libburn libisofs libisoburn mkinitcpio-archiso squashfs-tools
Getting started building Calamares:
Runtime dependencies for Calamares:
boost-libs cmake dmidecode gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality parted plasma-framework polkit-qt5 qt5-location qt5-svg qt5-webengine qt5-xmlpatterns qt5ct solid squashfs-tools udisks2 upower yaml-cpp
Build time dependencies for Calamares:
extra-cmake-modules git boost qt5-tools qt5-translations
getting-started-archiso.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,56 @@
--------------------------------------------------
Ezarcher Linux - Live Desktop
ezarch CLI Install Scripts & Calamares Installer
--------------------------------------------------
Welcome to Ezarcher
The Ezarcher Linux ISO is a full featured Arch Linux desktop. The live system comes with many common desktop software packages and tools to install Arch Linux on your system. There are two installer methods, the Calamares Installer Framework and my own ezarch scripts. The Calamares installer is located in the System menu and titled Install System. Finally, there is also the choice to use the install guides to copy and paste commands that will install Arch, the Arch Way.
The live user's /home folder has an ezarcher folder with several folders containing all the project files for the Ezarcher system. The ~/ezarcher/Docs folder contains some introductory readme files and suggested steps to enhance the system. The ~/ezarcher/Guides folder has the original ezarch install guides with each step to install an Arch system from scratch. The ~/ezarcher/PkgBuilds folder contains the the PKGBUILD files for the Calamares and its two helper applications. The ~/ezarcher/Scripts folder contains the ezarch.bios and ezarch.uefi install scripts to perform an menu driven Arch installation. The ~/ezarcher/Templates folder contains tar files for each of the live ISOs with a desktop environment.
User password: live
Root password: toor
Have fun, stay safe. :-)
--------------------------------------
Templates to Build Your Own ISOs
--------------------------------------
Ezarcher Desktop Templates
https://sourceforge.net/projects/ezarch/files/Ezarcher/Templates/
The Ezarcher Desktop Templates project is a simple set of files and a steps.sh script to automate the building of a live desktop Arch Linux ISO that contains one of several desktops, and includes the ezarch install scripts in the ~/ezarcher/Scripts folder. The Calamares Installer is also available in each desktop template. I must express my sincere gratitude and give full credit to Matias Calabrese for his exemplary contribution of transforming the ezarcher templates to work with the new archiso program and process. This project would not be where it is today without his assistance and contributions. Thank you, Matias! :-)
The steps.sh file copies the necessary files into the build folder, in this case, "ezreleng" and runs the mkarchiso script to produce the Ezarcher GUI ISO image. In addition to the standard Arch Linux install media packages, I have added one of six desktop environments, a plethora of multimedia software, system maintenance and recovery tools, filesystem drivers, wifi drivers, and other assorted software in order to provide a full-featured desktop experience. The script creates a live user and assigns the password "live." The root user is given the password "toor" (root spelled backwards). Sddm is enabled, networkmanager and systemd-resolved are enabled, haveged is enabled, bluetooth is enabled, Cups is enabled, and the graphical runlevel target is set.
I have included the ezarch.bios and ezarch.uefi install scripts for you to install a fresh Arch Linux system using my preferred install method. The install scripts are located in the ~/ezarcher/Scripts folder and can be launched by using su to get a root terminal, open a terminal in the ~/ezarcher/Scripts and type: ./ezarch.bios or ./ezarch.uefi depending on the type of installation required. The ezmaint script has nine various maintenance functions that should be performed occasionally on any Arch based system. The menu gives easy access to these functions:
-------------------------------------
Ezarcher Maintenance Script
-------------------------------------
1) Failed systemd services
2) Check journal logs
3) Cleanup journal space
4) Run system update
5) Clean package cache
6) Reset all pacman keys
7) Cleanup user cache folder
8) Regenerate mirrorlist
9) Enable Firewalld Service
X) Exit
Enter your choice:
Being based on Arch Linux, Ezarcher Desktop Templates inherits the same rolling release nature and caveats. There may be times when the Arch repositories change and the installer scripts do not function as intended.
All of my scripts and documents are free for public use and adaptation, as per the terms as licensed under the GNU Public License 3.0. Please use and enjoy. Thank you. :-)
readme.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,25 @@
Automate mirrorlist generation with Pacman hook:
Create a file /etc/pacman.d/hooks/mirrorupgrade.hook
$ sudo mkdir /etc/pacman.d/hooks
$ sudo nano /etc/pacman.d/hooks/mirrorupgrade.hook
Add the following lines:
[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist
[Action]
Description = Updating pacman-mirrorlist with reflector and removing pacnew...
When = PostTransaction
Depends = reflector
Exec = /bin/sh -c "reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"
Save and close the file.
reflector-pacman-hook.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,165 @@
---------------------------------------------------
Arch Install - Legacy BIOS System & GPT Partition Layout
Multiple Choice Desktop Example
---------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - BIOS GPT
cfdisk /dev/sda
sda1: bios-boot, sda2: swap, sda3: root, sda4: home
bios-boot: type: bios-boot size: 8Mb
7. Format partitions
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
mkswap /dev/sda2
swapon /dev/sda2
8. Mount partitions
mount /dev/sda3 /mnt
mkdir /mnt/home
mount /dev/sda4 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Systemd services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,164 @@
-----------------------------------------------------
Arch Install - Legacy BIOS System & MBR Partition Layout
Multiple Choice Desktop Example
-----------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - BIOS MBR
cfdisk /dev/sda
sda1: swap, sda2: root, sda3: home
7. Format partitions
mkfs.ext4 /dev/sda2
mkfs.ext4 /dev/sda3
mkswap /dev/sda1
swapon /dev/sda1
8. Mount partitions
mount /dev/sda2 /mnt
mkdir /mnt/home
mount /dev/sda3 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Systemd services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,168 @@
---------------------------------------------------
Arch Install - UEFI System & GPT Partition Layout
Multiple Choice Desktop Example
---------------------------------------------------
1. Set keyboard layout - default is US
** Available layouts can be listed with:
ls /usr/share/kbd/keymaps/i386/**/*.map.gz | less
** To modify the layout, append a corresponding file name to loadkeys, UK for example:
loadkeys uk.map.gz
2. Verify boot mode (UEFI or Legacy):
ls /sys/firmware/efi/efivars
** If the directory does not exist, the system may be booted in Legacy BIOS Mode
3. Check internet connection:
ping google.com
4. Update system clock
timedatectl set-ntp true
5. Sync repositories, Install Reflector and Create mirrorlist, & install latest keyring
pacman -Sy
pacman -S archlinux-keyring
pacman -S --needed reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
6. Run cfdisk - UEFI GPT
cfdisk /dev/sda
sda1: efi system, sda2: swap, sda3: root, sda4: home
efi system partition: type: EFI System, size: 512Mb, format: fat32
7. Format partitions
mkfs.fat -F32 /dev/sda1
mkfs.ext4 /dev/sda3
mkfs.ext4 /dev/sda4
mkswap /dev/sda2
swapon /dev/sda2
8. Mount partitions
mount /dev/sda3 /mnt
mkdir -p /mnt/efi
mount /dev/sda1 /mnt/efi
mkdir /mnt/home
mount /dev/sda4 /mnt/home
9. Install base packages
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
10. Create fstab
genfstab -U /mnt >> /mnt/etc/fstab
11. Chroot into system
arch-chroot /mnt
12. Configure timezone -- Example, choose your correct timezone
rm -rf /etc/localtime
to list geographic areas:
ls /usr/share/zoneinfo/
pick timezome and:
ln -sf /usr/share/zoneinfo/America/Phoenix /etc/localtime
hwclock --systohc --utc
13. Configure locale -- Example, choose your correct locale
nano /etc/locale.gen
uncomment lines:
en_US.UTF-8 UTF-8
locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
export LANG=en_US.UTF-8
14. Configure networking
A. Create hostname -- Example, choose your own hostname (computer name)
echo myhostname > /etc/hostname
B. Edit hosts file
nano /etc/hosts
Add lines:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname
15. Create root password and user -- Example, choose your own username
passwd root
useradd -m -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm -s /bin/bash username
passwd username
export VISUAL=nano
export EDITOR=nano
visudo /etc/sudoers
uncomment line:
%wheel ALL=(ALL) ALL
16. Sync repositories, Install Reflector and Create mirrorlist
pacman -S reflector
reflector --latest 10 --protocol https --save /etc/pacman.d/mirrorlist
17. Install GRUB
pacman -S grub efibootmgr os-prober
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck
grub-mkconfig -o /boot/grub/grub.cfg
18. Run mkinitcpio -- linux-lts for long term support kernel, linux for standard kernel
mkinitcpio -p linux-lts
19. Install software - still inside chroot!
Xorg
pacman -S xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
General
pacman -S --needed amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
Multimedia
pacman -S --needed alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
Networking
pacman -S --needed avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nm-connection-editor nftables nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
Fonts
pacman -S --needed ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
Printing
pacman -S --needed cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
LXQt Desktop
pacman -S --needed accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
Plasma Desktop
pacman -S --needed accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
Xfce Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
Mate Desktop
pacman -S --needed accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
Cinnamon Desktop
pacman -S --needed accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
Gnome Desktop
pacman -S --needed accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
20. Enable services
systemctl disable dhcpcd.service
systemctl enable haveged.service
systemctl enable bluetooth.service
systemctl enable cups.service
systemctl enable NetworkManager
systemctl enable firewalld.service
systemctl enable fstrim.timer
systemctl enable plocate-updatedb.timer
21. Display Manager
systemctl enable sddm.service (for all except Gnome)
systemctl enable gdm.service (only for Gnome)
22. Exit chroot
exit (arch-chroot)
umount -a
reboot
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,56 @@
# Ezarcher Calamares Installer pkgbuild
pkgname=calamares
pkgver=3.2.56
_pkgver=3.2.56
pkgrel=1
pkgdesc='Distribution-independent installer framework'
arch=('x86_64')
license=(GPL)
url="https://github.com/calamares/calamares"
license=('LGPL')
depends=('cmake' 'kconfig' 'kcoreaddons' 'kiconthemes' 'ki18n' 'kio' 'solid' 'yaml-cpp' 'kpmcore' 'qt5-webengine' 'kwidgetsaddons'
'icu' 'qt5-location' 'boost-libs' 'qt5-svg' 'qt5ct' 'polkit-qt5' 'gtk-update-icon-cache' 'plasma-framework' 'parted'
'qt5-xmlpatterns' 'squashfs-tools' 'libpwquality' 'dmidecode' 'kparts' 'kdbusaddons' 'kservice' 'udisks2' 'upower')
makedepends=('extra-cmake-modules' 'qt5-tools' 'qt5-translations' 'git' 'boost')
source=("$pkgname-$pkgver.tar.gz::https://github.com/calamares/calamares/releases/download/v$pkgver/calamares-$pkgver.tar.gz")
sha256sums=('e1402d7693659b85c5e553481a7252d91350c3f33ffea413488d7712d3281e03')
prepare() {
cd ${srcdir}/calamares-${pkgver}
sed -i -e 's/"Install configuration files" OFF/"Install configuration files" ON/' CMakeLists.txt
# change version
sed -i -e "s|$pkgver|$_pkgver|g" CMakeLists.txt
_ver="$pkgver"
printf 'Version: %s-%s' "${_ver}" "${pkgrel}"
sed -i -e "s|\${CALAMARES_VERSION_MAJOR}.\${CALAMARES_VERSION_MINOR}.\${CALAMARES_VERSION_PATCH}|${_ver}-${pkgrel}|g" CMakeLists.txt
sed -i -e "s|CALAMARES_VERSION_RC 1|CALAMARES_VERSION_RC 0|g" CMakeLists.txt
}
build() {
cd ${srcdir}/calamares-${pkgver}
mkdir -p build
cd build
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DWITH_PYTHONQT:BOOL=ON \
-DWITH_KF5DBus=OFF \
-DBoost_NO_BOOST_CMAKE=ON \
-DSKIP_MODULES="tracking webview interactiveterminal initramfs \
initramfscfg dracut dracutlukscfg finishedq summaryq \
dummyprocess dummypython dummycpp usersq oemid \
dummypythonqt services-openrc keyboardq zfs \
localeq plasmalnf welcomeq notesqml packagechooserq"
make
}
package() {
cd ${srcdir}/calamares-${pkgver}/build
make DESTDIR="$pkgdir" install
install -Dm644 "../calamares.desktop" "$pkgdir/usr/share/applications/calamares.desktop"
}

View file

@ -0,0 +1,12 @@
Getting started building Calamares:
Runtime dependencies for Calamares:
boost-libs cmake dmidecode gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality parted plasma-framework polkit-qt5 qt5-location qt5-svg qt5-webengine qt5-xmlpatterns qt5ct solid squashfs-tools udisks2 upower yaml-cpp
Build time dependencies for Calamares:
extra-cmake-modules git boost qt5-tools qt5-translations
calamares-dependencies.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,222 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Product branding information. This influences some global
# user-visible aspects of Calamares, such as the product
# name, window behavior, and the slideshow during installation.
#
# Additional styling can be done using the stylesheet.qss
# file, also in the branding directory.
---
componentName: ezarcher
### WELCOME / OVERALL WORDING
#
# These settings affect some overall phrasing and looks,
# which are most visible in the welcome page.
# This selects between different welcome texts. When false, uses
# the traditional "Welcome to the %1 installer.", and when true,
# uses "Welcome to the Calamares installer for %1." This allows
# to distinguish this installer from other installers for the
# same distribution.
welcomeStyleCalamares: false
# Should the welcome image (productWelcome, below) be scaled
# up beyond its natural size? If false, the image does not grow
# with the window but remains the same size throughout (this
# may have surprising effects on HiDPI monitors).
welcomeExpandingLogo: true
### WINDOW CONFIGURATION
#
# The settings here affect the placement of the Calamares
# window through hints to the window manager and initial
# sizing of the Calamares window.
# Size and expansion policy for Calamares.
# - "normal" or unset, expand as needed, use *windowSize*
# - "fullscreen", start as large as possible, ignore *windowSize*
# - "noexpand", don't expand automatically, use *windowSize*
windowExpanding: normal
# Size of Calamares window, expressed as w,h. Both w and h
# may be either pixels (suffix px) or font-units (suffix em).
# e.g. "800px,600px"
# "60em,480px"
# This setting is ignored if "fullscreen" is selected for
# *windowExpanding*, above. If not set, use constants defined
# in CalamaresUtilsGui, 800x520.
windowSize: 800px,520px
# Placement of Calamares window. Either "center" or "free".
# Whether "center" actually works does depend on the window
# manager in use (and only makes sense if you're not using
# *windowExpanding* set to "fullscreen").
windowPlacement: center
### PANELS CONFIGURATION
#
# Calamares has a main content area, and two panels (navigation
# and progress / sidebar). The panels can be controlled individually,
# or switched off. If both panels are switched off, the layout of
# the main content area loses its margins, on the assumption that
# you're doing something special.
# Kind of sidebar (panel on the left, showing progress).
# - "widget" or unset, use traditional sidebar (logo, items)
# - "none", hide it entirely
# - "qml", use calamares-sidebar.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. Valid sides are:
# - "left" (if not specified, uses this)
# - "right"
# - "top"
# - "bottom"
# For instance, "widget,right" is valid; so is "qml", which defaults
# to putting the sidebar on the left. Also valid is "qml,top".
# While "widget,top" is valid, the widgets code is **not** flexible
# and results will be terrible.
sidebar: widget
# Kind of navigation (button panel on the bottom).
# - "widget" or unset, use traditional navigation
# - "none", hide it entirely
# - "qml", use calamares-navigation.qml from branding folder
# In addition, you **may** specify a side, separated by a comma,
# from the kind. The same sides are valid as for *sidebar*,
# except the default is *bottom*.
navigation: widget
### STRINGS, IMAGES AND COLORS
#
# This section contains the "branding proper" of names
# and images, rather than global-look settings.
# These are strings shown to the user in the user interface.
# There is no provision for translating them -- since they
# are names, the string is included as-is.
#
# The four Url strings are the Urls used by the buttons in
# the welcome screen, and are not shown to the user. Clicking
# on the "Support" button, for instance, opens the link supportUrl.
# If a Url is empty, the corresponding button is not shown.
#
# bootloaderEntryName is how this installation / distro is named
# in the boot loader (e.g. in the GRUB menu).
#
# These strings support substitution from /etc/os-release
# if KDE Frameworks 5.58 are available at build-time. When
# enabled, @{var-name} is replaced by the equivalent value
# from os-release. All the supported var-names are in all-caps,
# and are listed on the FreeDesktop.org site,
# https://www.freedesktop.org/software/systemd/man/os-release.html
# Note that ANSI_COLOR and CPE_NAME don't make sense here, and
# are not supported (the rest are). Remember to quote the string
# if it contains substitutions, or you'll get YAML exceptions.
#
# The *Url* entries are used on the welcome page, and they
# are visible as buttons there if the corresponding *show* keys
# are set to "true" (they can also be overridden).
strings:
productName: "@{NAME}"
shortProductName: Ezarcher
version: 2021
shortVersion: 2021
versionedName: Ezarcher Linux
shortVersionedName: Ezarcher Linux
bootloaderEntryName: Ezarcher
productUrl: https://sourceforge.net/projects/ezarch/
# supportUrl: https://sourceforge.net/projects/ezarch/
# knownIssuesUrl: https://sourceforge.net/projects/ezarch/
# releaseNotesUrl: https://sourceforge.net/projects/ezarch/
# donateUrl: https://sourceforge.net/projects/ezarch/
# These images are loaded from the branding module directory.
#
# productBanner is an optional image, which if present, will be shown
# on the welcome page of the application, above the welcome text.
# It is intended to have a width much greater than height.
# It is displayed at 64px height (also on HiDPI).
# Recommended size is 64px tall, and up to 460px wide.
# productIcon is used as the window icon, and will (usually) be used
# by the window manager to represent the application. This image
# should be square, and may be displayed by the window manager
# as small as 16x16 (but possibly larger).
# productLogo is used as the logo at the top of the left-hand column
# which shows the steps to be taken. The image should be square,
# and is displayed at 80x80 pixels (also on HiDPI).
# productWallpaper is an optional image, which if present, will replace
# the normal solid background on every page of the application.
# It can be any size and proportion,
# and will be tiled to fit the entire window.
# For a non-tiled wallpaper, the size should be the same as
# the overall window, see *windowSize* above (800x520).
# productWelcome is shown on the welcome page of the application in
# the middle of the window, below the welcome text. It can be
# any size and proportion, and will be scaled to fit inside
# the window. Use `welcomeExpandingLogo` to make it non-scaled.
# Recommended size is 320x150.
#
# These filenames can also use substitutions from os-release (see above).
images:
# productBanner: "banner.png"
productIcon: "squid.png"
productLogo: "logo.png"
productWallpaper: "wallpaper.png"
productWelcome: "languages.png"
# Colors for text and background components.
#
# - sidebarBackground is the background of the sidebar
# - sidebarText is the (foreground) text color
# - sidebarTextHighlight sets the background of the selected (current) step.
# Optional, and defaults to the application palette.
# - sidebarSelect is the text color of the selected step.
#
# These colors can **also** be set through the stylesheet, if the
# branding component also ships a stylesheet.qss. Then they are
# the corresponding CSS attributes of #sidebarApp.
style:
sidebarBackground: "#292F34"
sidebarText: "#FFFFFF"
sidebarTextSelect: "#292F34"
sidebarTextHighlight: "#D35400"
### SLIDESHOW
#
# The slideshow is displayed during execution steps (e.g. when the
# installer is actually writing to disk and doing other slow things).
# The slideshow can be a QML file (recommended) which can display
# arbitrary things -- text, images, animations, or even play a game --
# during the execution step. The QML **is** abruptly stopped when the
# execution step is done, though, so maybe a game isn't a great idea.
#
# The slideshow can also be a sequence of images (not recommended unless
# you don't want QML at all in your Calamares). The images are displayed
# at a rate of 1 every 2 seconds during the execution step.
#
# To configure a QML file, list a single filename:
# slideshow: "show.qml"
# To configure images, like the filenames (here, as an inline list):
# slideshow: [ "/etc/calamares/slideshow/0.png", "/etc/logo.png" ]
slideshow: "show.qml"
# There are two available APIs for a QML slideshow:
# - 1 (the default) loads the entire slideshow when the installation-
# slideshow page is shown and starts the QML then. The QML
# is never stopped (after installation is done, times etc.
# continue to fire).
# - 2 loads the slideshow on startup and calls onActivate() and
# onLeave() in the root object. After the installation is done,
# the show is stopped (first by calling onLeave(), then destroying
# the QML components).
#
# An image slideshow does not need to have the API defined.
slideshowAPI: 2

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2015 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -0,0 +1,148 @@
/* === This file is part of Calamares - <http://github.com/calamares> ===
*
* Copyright 2015, Teo Mrnjavac <teo@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*
* Ezarcher custom settings
*/
import QtQuick 2.0;
import calamares.slideshow 1.0;
Presentation
{
id: presentation
Timer {
id: advanceTimer
interval: 30000
running: true
repeat: true
onTriggered: presentation.goToNextSlide()
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background1
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 165
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>Welcome to Ezarcher, an Arch based Linux<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background2
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 163
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>Ezarcher is 100% compatible with Arch Linux<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background3
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 165
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>Look inside the ~/ezarcher folder for documentation<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Slide {
anchors.fill: parent
anchors.verticalCenterOffset: 0
Image {
id: background4
source: "slide1.png"
width: parent.width; height: parent.height
horizontalAlignment: Image.AlignCenter
verticalAlignment: Image.AlignTop
anchors.fill: parent
Text {
anchors.centerIn: parent
anchors.verticalCenterOffset: 165
anchors.horizontalCenterOffset: 0
font.pixelSize: parent.width *.020
color: 'white'
text: qsTr("<b>Thank you for trying Ezarcher<br/>")
wrapMode: Text.WordWrap
width: parent.width / 1.4
horizontalAlignment: Text.AlignHCenter
}
}
}
Component.onCompleted: advanceTimer.running = true
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: 2014 Teo Mrnjavac <teo@kde.org>
SPDX-License-Identifier: GPL-3.0-or-later

View file

@ -0,0 +1,92 @@
/*
A branding component can ship a stylesheet (like this one)
which is applied to parts of the Calamares user-interface.
In principle, all parts can be styled through CSS.
Missing parts should be filed as issues.
The IDs are based on the object names in the C++ code.
You can use the Debug Dialog to find out object names:
- Open the debug dialog
- Choose tab *Tools*
- Click *Widget Tree* button
The list of object names is printed in the log.
Documentation for styling Qt Widgets through a stylesheet
can be found at
https://doc.qt.io/qt-5/stylesheet-examples.html
https://doc.qt.io/qt-5/stylesheet-reference.html
In Calamares, styling widget classes is supported (e.g.
using `QComboBox` as a selector).
This example stylesheet has all the actual styling commented out.
The examples are not exhaustive.
*/
/*** Generic Widgets.
*
* You can style **all** widgets of a given class by selecting
* the class name. Some widgets have specialized sub-selectors.
*/
/*
QPushButton { background-color: green; }
*/
/*** Main application window.
*
* The main application window has the sidebar, which in turn
* contains a logo and a list of items -- note that the list
* can **not** be styled, since it has its own custom C++
* delegate code.
*/
/*
#mainApp { }
#sidebarApp { }
#logoApp { }
*/
/*** Welcome module.
*
* There are plenty of parts, but the buttons are the most interesting
* ones (donate, release notes, ...). The little icon image can be
* styled through *qproperty-icon*, which is a little obscure.
* URLs can reference the QRC paths of the Calamares application
* or loaded via plugins or within the filesystem. There is no
* comprehensive list of available icons, though.
*/
/*
QPushButton#aboutButton { qproperty-icon: url(:/data/images/release.svg); }
#donateButton,
#supportButton,
#releaseNotesButton,
#knownIssuesButton { qproperty-icon: url(:/data/images/help.svg); }
*/
/*** Partitioning module.
*
* Many moving parts, which you will need to experiment with.
*/
/*
#bootInfoIcon { }
#bootInfoLable { }
#deviceInfoIcon { }
#defineInfoLabel { }
#scrollAreaWidgetContents { }
#partitionBarView { }
*/
/*** Licensing module.
*
* The licensing module paints individual widgets for each of
* the licenses. The item can be collapsed or expanded.
*/
/*
#licenseItem { }
#licenseItemFullText { }
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 KiB

View file

@ -0,0 +1,22 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the bootloader module.
#
---
efiBootLoader: "grub"
kernel: "/vmlinuz-linux"
img: "/initramfs-linux.img"
fallback: "/initramfs-linux-fallback.img"
timeout: "10"
grubInstall: "grub-install"
grubMkconfig: "grub-mkconfig"
grubCfg: "/boot/grub/grub.cfg"
grubProbe: "grub-probe"
efiBootMgr: "efibootmgr"
installEFIFallback: true

View file

@ -0,0 +1,15 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the displaymanager module.
#
---
displaymanagers:
- sddm
- lightdm
basicSetup: false
sysconfigSetup: false

View file

@ -0,0 +1,20 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the fstab module.
#
---
mountOptions:
default: defaults,noatime
btrfs: defaults,noatime,noautodefrag
btrfs_swap: defaults
efiMountOptions: umask=0077
ssdExtraMountOptions:
btrfs: ssd
crypttabOptions: luks

View file

@ -0,0 +1,20 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the grugcfg module.
#
---
overwrite: false
prefer_grub_d: false
keepDistributor: false
defaults:
GRUB_TIMEOUT: 5
GRUB_DEFAULT: "saved"
GRUB_DISABLE_SUBMENU: true
GRUB_TERMINAL_OUTPUT: "console"
GRUB_DISABLE_RECOVERY: true

View file

@ -0,0 +1,11 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the initcpio module.
#
---
kernel: linux
be_unsafe: false

View file

@ -0,0 +1,11 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the keyboard module.
#
---
xOrgConfFileName: "/etc/X11/xorg.conf.d/00-keyboard.conf"
convertedKeymapPath: "/lib/kbd/keymaps/xkb"

View file

@ -0,0 +1,15 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the locale module.
#
---
region: ""
zone: ""
geoip:
style: "json"
url: "https://geoip.kde.org/v1/calamares"
selector: "" # leave blank for the default

View file

@ -0,0 +1,19 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Machine-ID and other random data on the target system.
#
---
systemd: true
dbus: true
dbus-symlink: true
entropy-copy: false
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed

View file

@ -0,0 +1,39 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the mount module.
#
---
extraMounts:
- device: proc
fs: proc
mountPoint: /proc
- device: sys
fs: sysfs
mountPoint: /sys
- device: /dev
mountPoint: /dev
options: bind
- device: tmpfs
fs: tmpfs
mountPoint: /run
- device: /run/udev
mountPoint: /run/udev
options: bind
extraMountsEfi:
- device: efivarfs
fs: efivarfs
mountPoint: /sys/firmware/efi/efivars
btrfsSubvolumes:
- mountPoint: /
subvolume: /@
- mountPoint: /home
subvolume: /@home
- mountPoint: /var/cache
subvolume: /@cache
- mountPoint: /var/log
subvolume: /@log

View file

@ -0,0 +1,18 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# The configuration for the packages module.
#
---
backend: pacman
skip_if_no_internet: false
update_db: false
update_system: false
operations:
- remove:
- calamares
- ckbcomp

View file

@ -0,0 +1,36 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the partition module.
#
---
efiSystemPartition: "/boot/efi"
efiSystemPartitionSize: 550M
efiSystemPartitionName: EFI
userSwapChoices:
- none # Create no swap, use no swap
- small # Up to 4GB
- suspend # At least main memory size
# - reuse # Re-use existing swap, but don't create any (unsupported right now)
- file # To swap file instead of partition
swapPartitionName: SWAP
drawNestedPartitions: false
alwaysShowPartitionLabels: true
allowManualPartitioning: true
initialPartitioningChoice: none
initialSwapChoice: none
defaultFileSystemType: "ext4"
availableFileSystemTypes: ["ext4","btrfs","xfs"]

View file

@ -0,0 +1,9 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the removeuser module.
#
---
username: live

View file

@ -0,0 +1,17 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Systemd services manipulation.
#
---
services:
- name: "avahi-daemon"
mandatory: false
timers:
- name: "fstrim"
mandatory: false
- name: "plocate-updatedb"
mandatory: false

View file

@ -0,0 +1,18 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the ezfinish.conf shell process job.
#
---
i18n:
name: "Remove misc files"
dontChroot: false
timeout: 999
script:
- "-mv @@ROOT@@/etc/systemd/system/ez-pacman-init @@ROOT@@/etc/systemd/system/pacman-init.service"
- "-rm @@ROOT@@/etc/systemd/system/etc-pacman.d-gnupg.mount"
- "-rm @@ROOT@@/root/.automated_script.sh"
- "-rm @@ROOT@@/root/.zlogin"

View file

@ -0,0 +1,16 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the mvezmkinit.conf files shell process job.
#
---
i18n:
name: "Fix mkinitcpio stuff"
dontChroot: false
timeout: 999
script:
- "-mv @@ROOT@@/etc/mkinitcpio.d/ezmkinit @@ROOT@@/etc/mkinitcpio.d/linux.preset"
- "-mv @@ROOT@@/etc/ezmkinitcpio.conf @@ROOT@@/etc/mkinitcpio.conf"

View file

@ -0,0 +1,15 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the unpackfs module.
#
---
unpack:
- source: "/run/archiso/bootmnt/arch/x86_64/airootfs.sfs"
sourcefs: "squashfs"
destination: "/"
- source: "/run/archiso/bootmnt/arch/boot/x86_64/vmlinuz-linux"
sourcefs: "file"
destination: "/boot/vmlinuz-linux"

View file

@ -0,0 +1,57 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the users module.
#
---
defaultGroups:
- name: users
must_exist: true
system: true
- adm
- lp
- power
- video
- network
- storage
- name: wheel
must_exist: false
system: true
- audio
- sys
- optical
- scanner
- rfkill
- uucp
- sambashare
autologinGroup: autologin
doAutologin: false
sudoersGroup: wheel
setRootPassword: true
doReusePassword: true
passwordRequirements:
nonempty: true
minLength: -1 # Password at least this many characters
maxLength: -1 # Password at most this many characters
libpwquality:
- minlen=0
- minclass=0
allowWeakPasswords: true
allowWeakPasswordsDefault: true
userShell: /bin/bash
setHostname: EtcFile
writeHostsFile: true

View file

@ -0,0 +1,37 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration for the welcome module.
#
---
showSupportUrl: false
showKnownIssuesUrl: false
showReleaseNotesUrl: false
showDonateUrl: false
requirements:
requiredStorage: 8.0
requiredRam: 1.0
internetCheckUrl: http://www.freebsd.org
check:
- storage
- ram
- power
- internet
- root
- screen
required:
# - storage
- ram
# - root
geoip:
style: "xml"
url: "https://geoip.kde.org/v1/ubiquity" # extended XML format
selector: "CountryCode" # blank uses default, which is wrong

View file

@ -0,0 +1,15 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: backButton
anchors.left: parent.left
visible: parent.currentSlide > 0
isForward: false
}

View file

@ -0,0 +1,14 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
NavButton {
id: forwardButton
anchors.right: parent.right
visible: parent.currentSlide + 1 < parent.slides.length;
}

View file

@ -0,0 +1,59 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This is a navigation (arrow) button that fades in on hover, and
* which calls forward / backward navigation on the presentation it
* is in. It should be a child item of the presentation (not of a
* single slide). Use the ForwardButton or BackButton for a pre-
* configured instance that interacts with the presentation.
*/
import QtQuick 2.5;
Image {
id: fade
property bool isForward : true
width: 100
height: 100
anchors.verticalCenter: parent.verticalCenter
opacity: 0.3
OpacityAnimator {
id: fadeIn
target: fade
from: fade.opacity
to: 1.0
duration: 500
running: false
}
OpacityAnimator {
id: fadeOut
target: fade
from: fade.opacity
to: 0.3
duration: 250
running: false
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onEntered: { fadeOut.running = false; fadeIn.running = true }
onExited: { fadeIn.running = false ; fadeOut.running = true }
onClicked: {
if (isForward)
fade.parent.goToNextSlide()
else
fade.parent.goToPreviousSlide()
}
}
}

View file

@ -0,0 +1,243 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2017 Adriaan de Groot <groot@kde.org>
* SPDX-FileCopyrightText: 2016 The Qt Company Ltd.
* SPDX-License-Identifier: LGPL-2.1-only
*
* 2017, Adriaan de Groot <groot@kde.org>
* - added looping, keys-instead-of-shortcut
* 2018, Adriaan de Groot <groot@kde.org>
* - make looping a property, drop the 'c' fade-key
* - drop navigation through entering a slide number
* (this and the 'c' key make sense in a *presentation*
* slideshow, not in a passive slideshow like Calamares)
* - remove quit key
* 2019, Adriaan de Groot <groot@kde.org>
* - Support "V2" loading
* - Disable shortcuts until the content is visible in Calamares
* 2020, Adriaan de Groot <groot@kde.org>
* - Updated to SPDX headers
*/
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
import QtQuick.Window 2.0
Item {
id: root
property variant slides: []
property int currentSlide: 0
property bool loopSlides: true
property bool showNotes: false;
property bool allowDelay: true;
property alias mouseNavigation: mouseArea.enabled
property bool arrowNavigation: true
property bool keyShortcutsEnabled: true
property color titleColor: textColor;
property color textColor: "black"
property string fontFamily: "Helvetica"
property string codeFontFamily: "Courier New"
// This is set by the C++ part of Calamares when the slideshow
// becomes visible. You can connect it to a timer, or whatever
// else needs to start only when the slideshow becomes visible.
//
// It is used in this example also to keep the keyboard shortcuts
// enabled only while the slideshow is active.
property bool activatedInCalamares: false
// Private API
property int _lastShownSlide: 0
Component.onCompleted: {
var slideCount = 0;
var slides = [];
for (var i=0; i<root.children.length; ++i) {
var r = root.children[i];
if (r.isSlide) {
slides.push(r);
}
}
root.slides = slides;
// Make first slide visible...
if (root.slides.length > 0)
root.slides[root.currentSlide].visible = true;
}
function switchSlides(from, to, forward) {
from.visible = false
to.visible = true
return true
}
onCurrentSlideChanged: {
switchSlides(root.slides[_lastShownSlide], root.slides[currentSlide], currentSlide > _lastShownSlide)
_lastShownSlide = currentSlide
// Always keep focus on the slideshow
root.focus = true
}
function goToNextSlide() {
if (root.slides[currentSlide].delayPoints) {
if (root.slides[currentSlide]._advance())
return;
}
if (currentSlide + 1 < root.slides.length)
++currentSlide;
else if (loopSlides)
currentSlide = 0; // Loop at the end
}
function goToPreviousSlide() {
if (currentSlide - 1 >= 0)
--currentSlide;
else if (loopSlides)
currentSlide = root.slides.length - 1
}
focus: true // Keep focus
// Navigation through key events, too
Keys.onSpacePressed: goToNextSlide()
Keys.onRightPressed: goToNextSlide()
Keys.onLeftPressed: goToPreviousSlide()
// navigate with arrow keys
Shortcut { sequence: StandardKey.MoveToNextLine; enabled: root.activatedInCalamares && root .arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousLine; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
Shortcut { sequence: StandardKey.MoveToNextChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousChar; enabled: root.activatedInCalamares && root.arrowNavigation; onActivated: goToPreviousSlide() }
// presentation-specific single-key shortcuts (which interfere with normal typing)
Shortcut { sequence: " "; enabled: root.activatedInCalamares && root.keyShortcutsEnabled; onActivated: goToNextSlide() }
// standard shortcuts
Shortcut { sequence: StandardKey.MoveToNextPage; enabled: root.activatedInCalamares; onActivated: goToNextSlide() }
Shortcut { sequence: StandardKey.MoveToPreviousPage; enabled: root.activatedInCalamares; onActivated: goToPreviousSlide() }
MouseArea {
id: mouseArea
anchors.fill: parent
acceptedButtons: Qt.LeftButton | Qt.RightButton
onClicked: {
if (mouse.button == Qt.RightButton)
goToPreviousSlide()
else
goToNextSlide()
}
onPressAndHold: goToPreviousSlide(); //A back mechanism for touch only devices
}
Window {
id: notesWindow;
width: 400
height: 300
title: "QML Presentation: Notes"
visible: root.showNotes
Flickable {
anchors.fill: parent
contentWidth: parent.width
contentHeight: textContainer.height
Item {
id: textContainer
width: parent.width
height: notesText.height + 2 * notesText.padding
Text {
id: notesText
property real padding: 16;
x: padding
y: padding
width: parent.width - 2 * padding
font.pixelSize: 16
wrapMode: Text.WordWrap
property string notes: root.slides[root.currentSlide].notes;
onNotesChanged: {
var result = "";
var lines = notes.split("\n");
var beginNewLine = false
for (var i=0; i<lines.length; ++i) {
var line = lines[i].trim();
if (line.length == 0) {
beginNewLine = true;
} else {
if (beginNewLine && result.length) {
result += "\n\n"
beginNewLine = false
}
if (result.length > 0)
result += " ";
result += line;
}
}
if (result.length == 0) {
font.italic = true;
text = "no notes.."
} else {
font.italic = false;
text = result;
}
}
}
}
}
}
}

View file

@ -0,0 +1,206 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2012 Digia Plc and/or its subsidiary(-ies).
* SPDX-License-Identifier: LGPL-2.1-only
*/
/****************************************************************************
**
** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QML Presentation System.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.5
Item {
/*
Slides can only be instantiated as a direct child of a Presentation {} as they rely on
several properties there.
*/
id: slide
property bool isSlide: true;
property bool delayPoints: false;
property int _pointCounter: 0;
function _advance() {
if (!parent.allowDelay)
return false;
_pointCounter = _pointCounter + 1;
if (_pointCounter < content.length)
return true;
_pointCounter = 0;
return false;
}
property string title;
property variant content: []
property string centeredText
property string writeInText;
property string notes;
property real fontSize: parent.height * 0.05
property real fontScale: 1
property real baseFontSize: fontSize * fontScale
property real titleFontSize: fontSize * 1.2 * fontScale
property real bulletSpacing: 1
property real contentWidth: width
// Define the slide to be the "content area"
x: parent.width * 0.05
y: parent.height * 0.2
width: parent.width * 0.9
height: parent.height * 0.7
property real masterWidth: parent.width
property real masterHeight: parent.height
property color titleColor: parent.titleColor;
property color textColor: parent.textColor;
property string fontFamily: parent.fontFamily;
property int textFormat: Text.PlainText
visible: false
Text {
id: titleText
font.pixelSize: titleFontSize
text: title;
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.top
anchors.bottomMargin: parent.fontSize * 1.5
font.bold: true;
font.family: slide.fontFamily
color: slide.titleColor
horizontalAlignment: Text.Center
z: 1
}
Text {
id: centeredId
width: parent.width
anchors.centerIn: parent
anchors.verticalCenterOffset: - parent.y / 3
text: centeredText
horizontalAlignment: Text.Center
font.pixelSize: baseFontSize
font.family: slide.fontFamily
color: slide.textColor
wrapMode: Text.Wrap
}
Text {
id: writeInTextId
property int length;
font.family: slide.fontFamily
font.pixelSize: baseFontSize
color: slide.textColor
anchors.fill: parent;
wrapMode: Text.Wrap
text: slide.writeInText.substring(0, length);
NumberAnimation on length {
from: 0;
to: slide.writeInText.length;
duration: slide.writeInText.length * 30;
running: slide.visible && parent.visible && slide.writeInText.length > 0
}
visible: slide.writeInText != undefined;
}
Column {
id: contentId
anchors.fill: parent
Repeater {
model: content.length
Row {
id: row
function decideIndentLevel(s) { return s.charAt(0) == " " ? 1 + decideIndentLevel(s.substring(1)) : 0 }
property int indentLevel: decideIndentLevel(content[index])
property int nextIndentLevel: index < content.length - 1 ? decideIndentLevel(content[index+1]) : 0
property real indentFactor: (10 - row.indentLevel * 2) / 10;
height: text.height + (nextIndentLevel == 0 ? 1 : 0.3) * slide.baseFontSize * slide.bulletSpacing
x: slide.baseFontSize * indentLevel
visible: (!slide.parent.allowDelay || !delayPoints) || index <= _pointCounter
Rectangle {
id: dot
anchors.baseline: text.baseline
anchors.baselineOffset: -text.font.pixelSize / 2
width: text.font.pixelSize / 3
height: text.font.pixelSize / 3
color: slide.textColor
radius: width / 2
opacity: text.text.length == 0 ? 0 : 1
}
Item {
id: space
width: dot.width * 1.5
height: 1
}
Text {
id: text
width: slide.contentWidth - parent.x - dot.width - space.width
font.pixelSize: baseFontSize * row.indentFactor
text: content[index]
textFormat: slide.textFormat
wrapMode: Text.WordWrap
color: slide.textColor
horizontalAlignment: Text.AlignLeft
font.family: slide.fontFamily
}
}
}
}
}

View file

@ -0,0 +1,29 @@
/* === This file is part of Calamares - <https://calamares.io> ===
*
* SPDX-FileCopyrightText: 2018 Adriaan de Groot <groot@kde.org>
* SPDX-License-Identifier: GPL-3.0-or-later
*
* Calamares is Free Software: see the License-Identifier above.
*
*/
/* This control just shows a (non-translated) count of the slides
* in the slideshow in the format "n / total".
*/
import QtQuick 2.5;
Rectangle {
id: slideCounter
anchors.right: parent.right
anchors.bottom: parent.bottom
width: 100
height: 50
Text {
id: slideCounterText
anchors.centerIn: parent
//: slide counter, %1 of %2 (numeric)
text: qsTr("%L1 / %L2").arg(parent.parent.currentSlide + 1).arg(parent.parent.slides.length)
}
}

View file

@ -0,0 +1,10 @@
module calamares.slideshow
Presentation 1.0 Presentation.qml
Slide 1.0 Slide.qml
NavButton 1.0 NavButton.qml
ForwardButton 1.0 ForwardButton.qml
BackButton 1.0 BackButton.qml
SlideCounter 1.0 SlideCounter.qml

View file

@ -0,0 +1,2 @@
SPDX-FileCopyrightText: no
SPDX-License-Identifier: CC0-1.0

View file

@ -0,0 +1,69 @@
# Ezarcher custom settings
# SPDX-FileCopyrightText: no
# SPDX-License-Identifier: CC0-1.0
#
# Configuration file for Calamares
#
---
modules-search: [ local ]
instances:
- id: mvezmkinit
module: shellprocess
config: shellprocess-mvezmkinit.conf
- id: ezfinish
module: shellprocess
config: shellprocess-ezfinish.conf
sequence:
- show:
- welcome
- locale
- keyboard
- partition
- users
- summary
- exec:
- partition
- mount
- unpackfs
- machineid
- fstab
- locale
- keyboard
- localecfg
- luksbootkeyfile
- luksopenswaphookcfg
- removeuser
- users
- networkcfg
- hwclock
- services-systemd
- packages
- displaymanager
- shellprocess@mvezmkinit
- initcpiocfg
- initcpio
- grubcfg
- bootloader
- shellprocess@ezfinish
- umount
- show:
- finished
branding: ezarcher
prompt-install: true
dont-chroot: false
oem-setup: false
disable-cancel: false
disable-cancel-during-exec: false
hide-back-and-next-during-exec: false
quit-at-end: false

View file

@ -0,0 +1,35 @@
# Maintainer: Nissar Chababy <funilrys at outlook dot com>
# Ex-Maintainer: Jeroen Bollen <jbinero at gmail dot comau>
pkgname=ckbcomp
pkgver=1.207
pkgrel=1
pkgdesc="Compile a XKB keyboard description to a keymap suitable for loadkeys or kbdcontrol"
arch=(any)
url="http://anonscm.debian.org/cgit/d-i/console-setup.git/"
license=('GPL2')
depends=('perl')
source=("http://ftp.de.debian.org/debian/pool/main/c/console-setup/console-setup_${pkgver}.tar.xz")
sha256sums=('5c9ff5d48d5fd57d3bc874de8f508ccc7b7df21fd64f651db5a83bda0c91c5e9')
package() {
if [[ -d "${srcdir}/console-setup" ]]
then
cd console-setup
elif [[ -d "${srcdir}/console-setup-${pkgver}" ]]
then
cd console-setup-${pkgver}
else
echo "Source directory not found.".
exit 1
fi
if [[ ${?} != 0 ]]
then
cd console-setup-${pkgver}
fi
install -d ${pkgdir}/usr/bin/
install -m755 Keyboard/ckbcomp ${pkgdir}/usr/bin/
}

View file

@ -0,0 +1,28 @@
# Maintainer: Jenya Sovetkin <e.sovetkin@gmail.com>
# Contributors: https://aur.archlinux.org/account/f4bio
pkgname=mkinitcpio-openswap
pkgver=0.1.0
pkgrel=3
pkgdesc="mkinitcpio hook to open swap at boot time"
arch=(any)
license=('unknown')
url="https://aur.archlinux.org/packages/mkinitcpio-openswap/"
depends=(mkinitcpio)
backup=('etc/openswap.conf')
install="usage.install"
source=('openswap.hook'
'openswap.install'
'openswap.conf')
sha256sums=('84ef428386b7f4353af036ccfbd4c60901a76e2d0c7a38dd3be2000219ea9d23'
'94dd98a953bab2244215a2b20767cdc9500fc438bed9ec27cae72a73766c6b86'
'3308f2679bb7c962d98adf2684d25390025d025e3d30bc1e773e3522311ad325')
package() {
install -Dm 644 openswap.hook \
"${pkgdir}/usr/lib/initcpio/hooks/openswap"
install -Dm 644 openswap.install \
"${pkgdir}/usr/lib/initcpio/install/openswap"
install -Dm 644 openswap.conf \
"${pkgdir}/etc/openswap.conf"
}

View file

@ -0,0 +1,17 @@
## cryptsetup open $swap_device $crypt_swap_name
## get uuid using e.g. lsblk -f
swap_device=/dev/disk/by-uuid/2788eb78-074d-4424-9f1d-ebffc9c37262
crypt_swap_name=cryptswap
## one can optionally provide a keyfile device and path on this device
## to the keyfile
keyfile_device=/dev/mapper/cryptroot
keyfile_filename=etc/keyfile-cryptswap
## additional arguments are given to mount for keyfile_device
## has to start with --options (if so desired)
#keyfile_device_mount_options="--options=subvol=__active/__"
## additional arguments are given to cryptsetup
## --allow-discards options is desired in case swap is on SSD partition
cryptsetup_options="--type luks"

View file

@ -0,0 +1,25 @@
run_hook ()
{
## read openswap configurations
source /openswap.conf
## Optional: To avoid race conditions
x=0;
while [ ! -b "$keyfile_device" ] && [ $x -le 10 ]; do
x=$((x+1))
sleep .2
done
## End of optional
if [ -z "$keyfile_device" ] || [ -z "$keyfile_filename" ]
then
## case when no keyfile provided in configurations
cryptsetup open $cryptsetup_options "$swap_device" "$crypt_swap_name"
else
## case when keyfile is provided in configurations
mkdir openswap_keymount
mount $keyfile_device_mount_options "$keyfile_device" openswap_keymount
cryptsetup open $cryptsetup_options --key-file "openswap_keymount/$keyfile_filename" "$swap_device" "$crypt_swap_name"
umount openswap_keymount
fi
}

View file

@ -0,0 +1,27 @@
build ()
{
grep "swap_device=" /etc/openswap.conf > "$BUILDROOT/openswap.conf"
grep "crypt_swap_name=" /etc/openswap.conf >> "$BUILDROOT/openswap.conf"
grep "keyfile_device=" /etc/openswap.conf >> "$BUILDROOT/openswap.conf"
grep "keyfile_filename=" /etc/openswap.conf >> "$BUILDROOT/openswap.conf"
grep "keyfile_device_mount_options=" /etc/openswap.conf >> "$BUILDROOT/openswap.conf"
grep "cryptsetup_options=" /etc/openswap.conf >> "$BUILDROOT/openswap.conf"
source "$BUILDROOT/openswap.conf"
if [ -z "$swap_device" ]; then
warning "swap_device variable is not set"
fi
if [ -z "$crypt_swap_name" ]; then
warning "crypt_swap_name variable is not set"
fi
add_runscript
}
help ()
{
cat<<HELPEOF
This hook opens a swap at boot time
HELPEOF
}

View file

@ -0,0 +1,9 @@
post_install() {
echo ""
echo "Alter /etc/openswap.conf file for your swap device name, keyfiles, etc..."
echo ""
echo "For more information see: https://wiki.archlinux.org/index.php/Dm-crypt/Swap_encryption#mkinitcpio_hook"
echo ""
echo "Don't forget to add the openswap hook after encrypt and before resume in your /etc/mkinitcpio.conf and run mkinitcpio -p linux..."
echo ""
}

View file

@ -0,0 +1,29 @@
PKGBUILD files for Calamares, ckbcomp, and openswap
In each folder is the latest PKGBUILD file for the three extra packages used to create the Ezarcher ISOs. If you attempt to build an ISO from one of my templates and Calamares will not launch in your live system, Calamares will need to be recompiled and the newly built package will need to be included in the ezrepo, instructions below:
Before doing anything, fully update your system with pacman -Syyu. Then, change into the Calamares folder and open the PKGBUILD file in a text editor. Identify the lines that set the version of Calamares:
pkgver=3.2.56
_pkgver=3.2.56
Change the version number to the most current version of Calamares available as stated on the calamares.io website. If the version number is still the same, no change to the above lines are necessary. If the version number is different, then the sha256sum will also be different and the following line in the PKGBUILD file will also need to be changed:
sha256sums=('e1402d7693659b85c5e553481a7252d91350c3f33ffea413488d7712d3281e03')
Go to the calamares.io website and click on the Code link at the top of the web page and locate the link to the release on the right side of the web page under the title Releases. On the release web page you will see the SHA256 listed. Copy that SHA256 number and paste it into the line in the PKGBUILD file, replacing the old sha256sum (everything inside the single quotation marks, leave the quotation marks). Save the PKGBUILD file.
Next, open a terminal. As your regular user (not root or sudo), run the following command:
makepkg
After the makepkg command completes you will have a Calamares Arch package ending in a .zst file extension. Copy the new Calamares package into the ezrepo folder and follow the below instructions to rebuild the ezrepo.
Rebuild the ezrepo:
In order to replace the older Calamares package included in my build template, copy your newly build Calamares package into the ezrpo folder and delete the old version. Also delete all four files beginning with the word "ezrepo." Open a terminal in that folder, and issue the command below to build the repository database files. The command should be run as a regular user, not root and not with sudo. Once the repo-add command finishes, you are ready to include the local repository in your build.
repo-add ./ezrepo.db.tar.gz ./*
PkgBuilds.txt
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)

View file

@ -0,0 +1,41 @@
# Maintainer: Trizen <echo dHJpemVuQHByb3Rvbm1haWwuY29tCg== | base64 -d>
pkgname=trizen
pkgver=1.64
pkgrel=1
epoch=1
pkgdesc="Trizen AUR Package Manager: lightweight pacman wrapper and AUR helper."
arch=('any')
url="https://github.com/trizen/${pkgname}"
license=('GPL3')
depends=(
'git'
'pacutils'
'perl>=5.20.0'
'perl-libwww'
'perl-term-ui'
'pacman'
'perl-json'
'perl-data-dump'
'perl-lwp-protocol-https'
'perl-term-readline-gnu'
)
optdepends=(
'highlight: for syntax highlighting'
'perl-json-xs: faster JSON deserialization'
#'perl-term-readline-gnu: better STDIN support'
)
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/trizen/${pkgname}/archive/${pkgver}.tar.gz")
sha256sums=('34f1f30e2551aef4d6155f6f02fe88ad6ed1684348a07ef9782f4837fda86046')
package() {
cd "$pkgname-$pkgver"
install -m 755 -D $pkgname "$pkgdir/usr/bin/$pkgname"
install -m 644 -D "trizen.1" "$pkgdir/usr/share/man/man1/trizen.1"
install -m 644 -D "zsh.completion" "$pkgdir/usr/share/zsh/site-functions/_trizen"
install -m 644 -D "bash.completion" "$pkgdir/usr/share/bash-completion/completions/trizen"
install -m 644 -D "fish.completion" "$pkgdir/usr/share/fish/vendor_completions.d/trizen.fish"
}

View file

@ -0,0 +1,731 @@
#!/bin/bash
# EZ Arch Installer - BIOS
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the Ezarch Installer Script ="
echo "= ="
echo "= BIOS Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by eznix ="
echo "= https://sourceforge.net/projects/ezarch/ ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+8MiB -t 0:ef02 -c 0:grub /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=i386-pc /dev/"${TRGTDRV}"
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - BIOS Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

View file

@ -0,0 +1,738 @@
#!/bin/bash
# EZ Arch Installer - UEFI
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ----------------------------------------
# Define Variables
# ----------------------------------------
MYTMZ="America/Phoenix"
# List possible timezones from: /usr/share/zoneinfo/...
LCLST="en_US"
# Format is language_COUNTRY where language is lower case two letter code
# and country is upper case two letter code, separated with an underscore
KEYMP="us"
# Use lower case two letter country code
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerr () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
clear
}
welcome () {
clear
echo "==================================================="
echo "= ="
echo "= Welcome to the Ezarch Installer Script ="
echo "= ="
echo "= UEFI Edition ="
echo "= Version 6.5 (Release) ="
echo "= ="
echo "= Brought to you by eznix ="
echo "= https://sourceforge.net/projects/ezarch/ ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
hrdclck () {
clear
timedatectl set-ntp true
}
usrname () {
clear
echo -e "\n"
read -p "Type your user name, be exact, and press Enter: " USRNAME
[[ -z "$USRNAME" ]] && usrname
clear
echo -e "\n"
echo "User name set to "${USRNAME}"..."
sleep 2
clear
}
usrpwd () {
clear
echo -e "\n"
read -p "Type your user password, be exact, and press Enter: " USRPWD
[[ -z "$USRPWD" ]] && usrpwd
clear
echo -e "\n"
echo "User password set to "${USRPWD}"..."
sleep 2
clear
}
rtpwd () {
clear
echo -e "\n"
read -p "Type your root password, be exact, and press Enter: " RTPWD
[[ -z "$RTPWD" ]] && rtpwd
clear
echo -e "\n"
echo "Root password set to "${RTPWD}"..."
sleep 2
clear
}
hstname () {
clear
echo -e "\n"
read -p "Type your hostname, be exact, and press Enter: " HSTNAME
[[ -z "$HSTNAME" ]] && hstname
clear
echo -e "\n"
echo "Hostname set to "${HSTNAME}"..."
sleep 2
clear
}
swapsize () {
clear
echo -e "\n"
read -p "Pick Swap Partition Size (2G, 4G, or 8G): " SWPSIZE
case $SWPSIZE in
2|2G|2g)
SWPSIZE=2GiB
;;
4|4G|4g)
SWPSIZE=4GiB
;;
8|8G|8g)
SWPSIZE=8Gib
;;
*)
echo "Invalid input..."
sleep 2
unset SWPSIZE
swapsize
;;
esac
clear
echo -e "\n"
echo "SWAP Partition Set To "${SWPSIZE}""
sleep 2
clear
}
rootsize () {
clear
echo -e "\n"
read -p "Pick Root Partition Size (20G, 40G, or 60G): " RTSIZE
case $RTSIZE in
20|20G|20g)
RTSIZE=20GiB
;;
40|40G|40g)
RTSIZE=40GiB
;;
60|60G|60g)
RTSIZE=60Gib
;;
*)
echo "Invalid input..."
sleep 2
unset RTSIZE
rootsize
;;
esac
clear
echo -e "\n"
echo "Root Partition Set To "${RTSIZE}""
sleep 2
clear
}
trgtdrvsd () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. sda), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvsd
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
trgtdrvnv () {
clear
echo -e "Check to see the available drives: \n"
/bin/lsblk
echo -e "\n"
read -p "Type your target device (e.g. nvme0n1), be exact, and press Enter: " TRGTDRV
[[ -z "$TRGTDRV" ]] && trgtdrvnv
clear
echo -e "\n"
echo "Target device set to "${TRGTDRV}"..."
sleep 2
clear
}
mkpartsd () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartsd () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\2
mkfs.fat -F32 /dev/"${TRGTDRV}"\1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartsd () {
clear
mount /dev/"${TRGTDRV}"\3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\4 /mnt/home
swapon /dev/"${TRGTDRV}"\2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
mkpartnv () {
clear
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192
dd bs=512 if=/dev/zero of=/dev/"${TRGTDRV}" count=8192 seek=$((`blockdev --getsz /dev/"${TRGTDRV}"` - 8192))
sgdisk -og /dev/"${TRGTDRV}"
sgdisk -n 0:0:+650MiB -t 0:ef00 -c 0:efi /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${SWPSIZE}" -t 0:8200 -c 0:swap /dev/"${TRGTDRV}"
sgdisk -n 0:0:+"${RTSIZE}" -t 0:8303 -c 0:root /dev/"${TRGTDRV}"
sgdisk -n 0:0:0 -t 0:8302 -c 0:home /dev/"${TRGTDRV}"
clear
echo -e "\n"
echo "Partitions created..."
sleep 2
clear
}
frmtpartnv () {
clear
mkswap -L swap /dev/"${TRGTDRV}"\p2
mkfs.fat -F32 /dev/"${TRGTDRV}"\p1
mkfs.ext4 -L root /dev/"${TRGTDRV}"\p3
mkfs.ext4 -L home /dev/"${TRGTDRV}"\p4
clear
echo -e "\n"
echo "Partitions formatted..."
sleep 2
clear
}
mntpartnv () {
clear
mount /dev/"${TRGTDRV}"\p3 /mnt
mkdir /mnt/efi
mount /dev/"${TRGTDRV}"\p1 /mnt/efi
mkdir /mnt/home
mount /dev/"${TRGTDRV}"\p4 /mnt/home
swapon /dev/"${TRGTDRV}"\p2
clear
echo -e "\n"
echo "Mounted partitions..."
sleep 2
clear
}
psbase () {
clear
pacstrap /mnt base base-devel cryptsetup dialog e2fsprogs device-mapper dhcpcd dosfstools efibootmgr gptfdisk grub inetutils less linux-lts linux-firmware lvm2 mkinitcpio mtools nano netctl nvme-cli os-prober reflector rsync sysfsutils xz zstd
clear
echo -e "\n"
echo "Pacstrap base system complete..."
sleep 2
clear
}
mkfstab () {
clear
genfstab -U /mnt >> /mnt/etc/fstab
clear
}
syshstnm () {
clear
echo ""${HSTNAME}"" > /mnt/etc/hostname
echo "127.0.0.1 localhost" >> /mnt/etc/hosts
echo "::1 localhost" >> /mnt/etc/hosts
echo "127.0.1.1 "${HSTNAME}".localdomain "${HSTNAME}"" >> /mnt/etc/hosts
clear
}
syslocale () {
clear
echo ""${LCLST}".UTF-8 UTF-8" >> /mnt/etc/locale.gen
echo "LANG="${LCLST}".UTF-8" > /mnt/etc/locale.conf
echo "KEYMAP="${KEYMP}"" > /mnt/etc/vconsole.conf
arch-chroot /mnt locale-gen
arch-chroot /mnt localectl set-locale LANG="${LCLST}".UTF-8
arch-chroot /mnt localectl set-keymap "${KEYMP}"
clear
}
sysusrpwd () {
clear
arch-chroot /mnt useradd -mU -s /bin/bash -G sys,log,network,floppy,scanner,power,rfkill,users,video,storage,optical,lp,audio,wheel,adm "${USRNAME}"
arch-chroot /mnt chpasswd <<< ""${USRNAME}":"${USRPWD}""
arch-chroot /mnt chpasswd <<< "root:"${RTPWD}""
clear
}
systmzone () {
clear
arch-chroot /mnt hwclock --systohc --utc
arch-chroot /mnt timedatectl set-ntp true
arch-chroot /mnt rm -rf /etc/localtime
arch-chroot /mnt ln -sf /usr/share/zoneinfo/"${MYTMZ}" /etc/localtime
clear
}
sysconfig () {
clear
echo -e "\n"
echo "Basic system config completed..."
sleep 2
clear
}
instgrub () {
clear
echo -e "\n"
arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --recheck
arch-chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
arch-chroot /mnt mkinitcpio -p linux-lts
clear
echo -e "\n"
echo "Grub installed & mkinicpio run..."
sleep 2
clear
}
instxorg () {
clear
pacstrap /mnt xorg xorg-apps xorg-server xorg-drivers xorg-xkill xorg-xinit xterm mesa
clear
echo -e "\n"
echo "Xorg installed installed..."
sleep 2
clear
}
instgen () {
clear
pacstrap /mnt amd-ucode arch-install-scripts archiso bash-completion bind-tools bluez bluez-utils btrfs-progs cdrtools cmake cryfs dd_rescue ddrescue devtools diffutils dkms dvd+rw-tools efitools encfs exfatprogs f2fs-tools fatresize fsarchiver fuse3 fwupd git gnome-disk-utility gnome-keyring gocryptfs gpart gparted grsync gvfs gvfs-afc gvfs-goa gvfs-gphoto2 grsync gvfs-mtp gvfs-nfs gvfs-smb haveged hdparm htop hwdata hwdetect hwinfo intel-ucode jfsutils mkinitcpio-archiso mkinitcpio-nfs-utils libburn libisofs libisoburn linux-lts-headers logrotate lsb-release lsscsi man-db man-pages mdadm ntfs-3g p7zip pacutils packagekit pacman-contrib pahole papirus-icon-theme parted perl perl-data-dump perl-json perl-lwp-protocol-https perl-term-readline-gnu perl-term-ui pkgfile plocate polkit pv qt5ct reiserfsprogs rsync s-nail sdparm sg3_utils smartmontools squashfs-tools sudo testdisk texinfo tlp udftools udisks2 unace unrar unzip usbmuxd usbutils vim which xdg-user-dirs xfsprogs
sleep 2
arch-chroot /mnt systemctl enable bluetooth.service
arch-chroot /mnt systemctl enable fstrim.timer
arch-chroot /mnt systemctl enable haveged.service
arch-chroot /mnt systemctl enable plocate-updatedb.timer
clear
echo -e "\n"
echo "General packages installed..."
sleep 2
clear
}
instcalamdep () {
clear
pacstrap /mnt boost boost-libs dmidecode extra-cmake-modules gtk-update-icon-cache icu kconfig kcoreaddons kdbusaddons kiconthemes ki18n kio kparts kpmcore kservice kwidgetsaddons libpwquality plasma-framework polkit-qt5 qt5-location qt5-svg qt5-tools qt5-translations qt5-webengine qt5-xmlpatterns qt5ct solid upower yaml-cpp
clear
echo -e "\n"
echo "Calamares dependencies installed..."
sleep 2
clear
}
instmedia () {
clear
pacstrap /mnt alsa-lib alsa-plugins alsa-firmware alsa-utils audacious audacious-plugins cdrdao dvdauthor faac faad2 ffmpeg ffmpegthumbnailer flac frei0r-plugins gstreamer gst-libav gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer-vaapi imagemagick lame libdvdcss libopenraw mencoder mjpegtools mpv poppler-glib pulseaudio pulseaudio-alsa pulseaudio-bluetooth pulseaudio-equalizer pulseaudio-jack simplescreenrecorder sox transcode smplayer x265 x264 xvidcore
clear
echo -e "\n"
echo "Multimedia packages installed..."
sleep 2
clear
}
instnet () {
clear
pacstrap /mnt avahi b43-fwcutter broadcom-wl-dkms curl dhclient dmraid dnsmasq dnsutils ethtool filezilla firefox firewalld iptables-nft ipw2100-fw ipw2200-fw iwd gnu-netcat net-tools netctl net-tools networkmanager networkmanager-openvpn network-manager-applet nftables nm-connection-editor nfs-utils nilfs-utils nss-mdns openconnect openresolv openssh openssl openvpn r8168 samba vsftpd wget wireless-regdb wireless_tools whois wpa_supplicant
sleep 2
arch-chroot /mnt systemctl enable NetworkManager.service
clear
echo -e "\n"
echo "Networking packages installed..."
sleep 2
clear
}
instfonts () {
clear
pacstrap /mnt ttf-ubuntu-font-family ttf-dejavu ttf-bitstream-vera ttf-liberation noto-fonts ttf-roboto ttf-opensans opendesktop-fonts cantarell-fonts freetype2
clear
echo -e "\n"
echo "Fonts packages installed..."
sleep 2
clear
}
instprint () {
clear
pacstrap /mnt cups cups-pdf cups-filters cups-pk-helper foomatic-db foomatic-db-engine ghostscript gsfonts gutenprint python-pillow python-pip python-pyqt5 python-reportlab simple-scan system-config-printer
sleep 2
arch-chroot /mnt systemctl enable cups.service
clear
echo -e "\n"
echo "Printing packages installed..."
sleep 2
clear
}
instlxqt () {
clear
pacstrap /mnt accountsservice aisleriot appstream-qt bluez-qt brightnessctl breeze-icons discover featherpad geany guvcview k3b kwin liblxqt libstatgrab libsysstat lximage-qt lxqt-about lxqt-admin lxqt-archiver lxqt-build-tools lxqt-config lxqt-globalkeys lxqt-notificationd lxqt-openssh-askpass lxqt-panel lxqt-policykit lxqt-powermanagement lxqt-qtplugin lxqt-runner lxqt-session lxqt-sudo lxqt-themes meld neofetch networkmanager-qt packagekit-qt5 pcmanfm-qt papirus-icon-theme pavucontrol-qt print-manager qbittorrent qterminal screengrab xpdf xscreensaver
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "LXQt desktop installed..."
sleep 2
clear
}
instkde () {
clear
pacstrap /mnt accountsservice aisleriot ark bluedevil breeze-icons bluez-qt discover dolphin geany guvcview gwenview k3b kcalc kinit konsole kwrite meld neofetch networkmanager-qt okular packagekit-qt5 papirus-icon-theme pavucontrol-qt plasma print-manager qbittorrent sddm sddm-kcm sweeper
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "KDE Plasma desktop installed..."
sleep 2
clear
}
instxfce () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman catfish dconf-editor epdfview galculator geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome sddm transmission-gtk xarchiver xfburn xfce4 xfce4-goodies
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "XFCE desktop installed..."
sleep 2
clear
}
instmate () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero dconf-editor geany gnome-firmware gnome-packagekit gtk-engine-murrine guvcview mate mate-applet-dock mate-extra mate-polkit meld neofetch papirus-icon-theme sddm transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Mate desktop installed..."
sleep 2
clear
}
instcinn () {
clear
pacstrap /mnt accountsservice adwaita-icon-theme adapta-gtk-theme aisleriot arc-gtk-theme arc-icon-theme asunder blueman brasero cinnamon cinnamon-translations dconf-editor epdfview file-roller geany gnome-firmware gnome-packagekit gnome-terminal gtk-engine-murrine guvcview meld nemo nemo-fileroller nemo-share neofetch papirus-icon-theme pavucontrol polkit-gnome sddm tldr tmux transmission-gtk viewnior xed
sleep 2
arch-chroot /mnt systemctl enable sddm.service
clear
echo -e "\n"
echo "Cinnamon desktop installed..."
sleep 2
clear
}
instgnome () {
clear
pacstrap /mnt accountsservice adapta-gtk-theme adwaita-icon-theme aisleriot asunder brasero breeze-icons dconf-editor gdm geany gnome gnome-bluetooth gnome-firmware gnome-nettool gnome-packagekit gnome-shell gnome-shell-extensions gnome-software-packagekit-plugin gnome-sound-recorder gnome-todo gnome-tweaks gnome-usage guvcview meld neofetch papirus-icon-theme pavucontrol polkit-gnome tmux transmission-gtk
sleep 2
arch-chroot /mnt systemctl enable gdm.service
clear
echo -e "\n"
echo "Gnome desktop installed..."
sleep 2
clear
}
invalid () {
echo -e "\n"
echo "Invalid answer, Please try again"
sleep 2
}
make_upht () { while true
do
clear
echo "----------------------------------"
echo " User, Passwords, & Hostname"
echo "----------------------------------"
echo ""
echo " 1) Create user name"
echo " 2) Make user password"
echo " 3) Make root password"
echo " 4) Make hostname"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice2
case $choice2 in
1 ) usrname ;;
2 ) usrpwd ;;
3 ) rtpwd ;;
4 ) hstname ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
sata_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.sda)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice3
case $choice3 in
1 ) trgtdrvsd ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartsd ;;
5 ) frmtpartsd ;;
6 ) mntpartsd ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
nvme_drv () { while true
do
clear
echo "--------------------------------"
echo " Partition Drive"
echo "--------------------------------"
echo ""
echo " 1) Enter device name (e.g.nvme0n1)"
echo " 2) Choose Swap partition size"
echo " 3) Choose Root partition size"
echo " ** Remaining space will be /home **"
echo " 4) Create partitions"
echo " 5) Format partitions (ext4)"
echo " 6) Mount partitions"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice4
case $choice4 in
1 ) trgtdrvnv ;;
2 ) swapsize ;;
3 ) rootsize ;;
4 ) mkpartnv ;;
5 ) frmtpartnv ;;
6 ) mntpartnv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
chdrvtype () { while true
do
clear
echo "-----------------------------------"
echo " Choose SATA or NVME Disk"
echo "-----------------------------------"
echo ""
echo " 1) SATA Disk"
echo " 2) NVME Disk"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice5
case $choice5 in
1 ) sata_drv ;;
2 ) nvme_drv ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_soft () { while true
do
clear
echo "--------------------------------"
echo " Install Software Categories"
echo "--------------------------------"
echo ""
echo " 1) Xorg"
echo " 2) General"
echo " 3) Multimedia"
echo " 4) Networking"
echo " 5) Fonts"
echo " 6) Printing support"
echo " 7) Calamares dependencies"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice6
case $choice6 in
1 ) instxorg ;;
2 ) instgen ;;
3 ) instmedia ;;
4 ) instnet ;;
5 ) instfonts ;;
6 ) instprint ;;
7 ) instcalamdep ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
inst_desk () { while true
do
clear
echo "--------------------------------"
echo " Choose A Desktop"
echo "--------------------------------"
echo ""
echo " 1) LXQt"
echo " 2) Plasma"
echo " 3) XFCE"
echo " 4) Mate"
echo " 5) Cinnamon"
echo " 6) Gnome"
echo ""
echo " R) Return to menu"
echo -e "\n"
read -p "Please enter your choice: " choice7
case $choice7 in
1 ) instlxqt ;;
2 ) instkde ;;
3 ) instxfce ;;
4 ) instmate ;;
5 ) instcinn ;;
6 ) instgnome ;;
r|R ) main_menu ;;
* ) invalid ;;
esac
done
}
main_menu () { while true
do
clear
echo "-------------------------------------"
echo " EZ Arch Installer - UEFI Systems"
echo "-------------------------------------"
echo ""
echo " 1) Username, Passwords, & Hostname"
echo " 2) Choose Device Type & Partition Drive"
echo " 3) Install Base System (pacstrap)"
echo " 4) Configure System Settings"
echo " 5) Install Broad Categories of Software"
echo " 6) Choose Desktop"
echo " 7) Install GRUB"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " choice1
case $choice1 in
1 ) make_upht ;;
2 ) chdrvtype ;;
3 ) psbase ;;
4 ) mkfstab; syshstnm; syslocale; sysusrpwd; systmzone; sysconfig ;;
5 ) inst_soft ;;
6 ) inst_desk ;;
7 ) instgrub ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerr
welcome
hrdclck
main_menu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

View file

@ -0,0 +1,206 @@
#!/bin/bash
# ezarcher maintenance
# Revision: 2022.04.22 -- by eznix (https://sourceforge.net/projects/ezarch/)
# (GNU/General Public License version 3.0)
# ---------------------------------------
# Define Functions:
# ---------------------------------------
handlerror () {
clear
set -uo pipefail
trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
}
welcomer () {
clear
echo "==================================================="
echo "= ="
echo "= Ezarcher Maintenance Script ="
echo "= ="
echo "= ="
echo "= Version 2.3 (Release) ="
echo "= ="
echo "= Brought to you by eznix ="
echo "= https://sourceforge.net/projects/ezarch/ ="
echo "= ="
echo -e "=================================================== \n"
sleep 4
}
failedsrvs () {
clear
systemctl --failed > /tmp/failedsrvs
nano /tmp/failedsrvs
clear
echo -e "\n"
rm /tmp/failedsrvs
clear
}
journalchk () {
clear
journalctl -p 3 -xb > /tmp/journalchk
nano /tmp/journalchk
clear
echo -e "\n"
rm /tmp/journalchk
clear
}
journalcln () {
clear
journalctl --vacuum-time=2weeks
clear
echo -e "\n"
echo "Journal directory cleaned"
sleep 2
clear
}
sysupdate () {
clear
pacman -Syu
clear
echo -e "\n"
echo "Full system upgrade finished"
sleep 2
clear
}
pkgsccache () {
clear
pacman -Scc
clear
echo -e "\n"
echo "Package cache cleaned"
sleep 2
clear
}
keysreset () {
clear
rm /var/lib/pacman/sync/*
rm -rf /etc/pacman.d/gnupg/*
pacman-key --init
pacman-key --populate
pacman -S --noconfirm archlinux-keyring
clear
echo -e "\n"
echo "All pacman keys are reset"
sleep 2
clear
}
usercachecln () {
clear
echo "[Unit]
Description=Clean primary user cache on boot.
[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/clnusercache.sh
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/clnusercache.service
echo "#!/bin/bash
rm -r /home/*/.cache/*
rm /etc/systemd/system/multi-user.target.wants/clnusercache.service" > /usr/local/bin/clnusercache.sh
chmod +x /usr/local/bin/clnusercache.sh
ln -sf /usr/lib/systemd/system/clnusercache.service /etc/systemd/system/multi-user.target.wants/clnusercache.service
clear
echo -e "\n"
echo "User's cache directory cleaned on next boot"
sleep 3
clear
}
runreflector () {
clear
reflector --latest 10 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
clear
echo -e "\n"
echo "Mirrorlist regenerated"
sleep 2
clear
}
enfirewall () {
clear
systemctl enable firewalld.service
systemctl start firewalld.service
clear
echo "Firewalld Service is enabled"
sleep 2
clear
}
mainmenu () { while true
do
clear
echo "-------------------------------------"
echo " EZArcher Maintenance Script"
echo "-------------------------------------"
echo ""
echo " 1) Failed systemd services"
echo " 2) Check journal logs"
echo " 3) Cleanup journal space"
echo " 4) Run system update"
echo " 5) Clean package cache"
echo " 6) Reset all pacman keys"
echo " 7) Clean user cache on next boot"
echo " 8) Regenerate mirrorlist"
echo " 9) Enable Firewalld Service"
echo ""
echo " X) Exit"
echo -e "\n"
read -p "Enter your choice: " optionA
case $optionA in
1 ) failedsrvs ;;
2 ) journalchk ;;
3 ) journalcln ;;
4 ) sysupdate ;;
5 ) pkgsccache ;;
6 ) keysreset ;;
7 ) usercachecln ;;
8 ) runreflector ;;
9 ) enfirewall ;;
x|X ) exit;;
* ) invalid ;;
esac
done
}
ROOTUSER () {
if [[ "$EUID" = 0 ]]; then
continue
else
echo "Please Run As Root"
sleep 2
exit
fi
}
ROOTUSER
handlerror
welcomer
mainmenu
done
# Disclaimer:
# THIS SOFTWARE IS PROVIDED BY EZNIX “AS IS” AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL EZNIX BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
# END

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB