126 lines
3.8 KiB
Bash
Executable file
126 lines
3.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
scrDir=$(dirname "$(realpath "$0")")
|
|
|
|
REFINDCONF="/boot/efi/EFI/refind/refind.conf"
|
|
|
|
install_secureboot(){
|
|
sudo pacman -S sbsigntools efitools refind
|
|
echo "[sbsigntools, efitools, refind] installed, press any key to continue ..."
|
|
sudo refind-install --shim /usr/share/shim-signed/shimx64.efi --localkeys
|
|
echo "[refind-install] executed, press any key to continue ..."
|
|
echo signing [/boot/efi/EFI/endeavouros/grubx64.efi]
|
|
sudo sbsign --key /etc/refind.d/keys/refind_local.key --cert /etc/refind.d/keys/refind_local.crt --output /boot/efi/EFI/endeavouros/grubx64.efi /boot/efi/EFI/endeavouros/grubx64.efi
|
|
echo signing [/boot/efi/EFI/boot/bootx64.efi]
|
|
sudo sbsign --key /etc/refind.d/keys/refind_local.key --cert /etc/refind.d/keys/refind_local.crt --output /boot/efi/EFI/boot/bootx64.efi /boot/efi/EFI/boot/bootx64.efi
|
|
echo signing [/boot/vmlinuz-linux]
|
|
sudo sbsign --key /etc/refind.d/keys/refind_local.key --cert /etc/refind.d/keys/refind_local.crt --output /boot/vmlinuz-linux /boot/vmlinuz-linux
|
|
}
|
|
|
|
install_theme(){
|
|
sudo mkdir -p /boot/efi/EFI/refind/themes
|
|
git clone https://github.com/catppuccin/refind.git catppuccin
|
|
cp catppuccin/assets/mocha/icons/os_arch.png catppuccin/assets/mocha/icons/os_endeavouros.png
|
|
sudo cp -rf catppuccin /boot/efi/EFI/refind/themes/
|
|
sudo rm $REFINDCONF
|
|
sudo cp .refind/refind.conf $REFINDCONF
|
|
rm -rf catppuccin
|
|
}
|
|
|
|
|
|
|
|
install_snapd(){
|
|
|
|
echo "Cloning Snapd AUR package..."
|
|
git clone https://aur.archlinux.org/snapd.git
|
|
cd snapd
|
|
echo "Building and installing Snapd..."
|
|
makepkg -si --noconfirm
|
|
echo "Enabling snapd.socket service..."
|
|
sudo systemctl enable --now snapd.socket
|
|
echo "Enabling AppArmor for Snap confinement..."
|
|
sudo systemctl enable --now snapd.apparmor.service
|
|
echo "Creating symbolic link for classic Snap support..."
|
|
sudo ln -s /var/lib/snapd/snap /snap
|
|
|
|
|
|
echo "Waiting for Snapd to complete device seeding..."
|
|
max_retries=10
|
|
retry_count=0
|
|
while ! sudo snap wait system seed.loaded && [ $retry_count -lt $max_retries ]; do
|
|
echo "Snapd is not seeded yet, retrying... ($retry_count/$max_retries)"
|
|
sleep 2
|
|
((retry_count++))
|
|
done
|
|
|
|
# Check if seeding failed after max retries
|
|
if [ $retry_count -ge $max_retries ]; then
|
|
echo "Snapd seeding failed after $max_retries retries. Exiting."
|
|
exit 1
|
|
fi
|
|
|
|
# Now you can install your Snap package
|
|
echo "Snapd is seeded and ready, installing the Snap package..."
|
|
sudo snap install hello-world
|
|
|
|
echo "Snap installation complete!"
|
|
|
|
}
|
|
|
|
install_snap_apps(){
|
|
# Set the path to the snap_apps.lst file
|
|
SNAP_APPS_FILE="${scrDir}/.extra/snap_apps.lst"
|
|
|
|
# Check if the file exists
|
|
if [ ! -f "$SNAP_APPS_FILE" ]; then
|
|
echo "File $SNAP_APPS_FILE not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Read each line in the "snap_apps.lst" file
|
|
while IFS= read -r line
|
|
do
|
|
# Skip empty lines and lines starting with '#'
|
|
if [ -z "$line" ] || [[ "$line" == \#* ]]; then
|
|
continue
|
|
fi
|
|
|
|
# Install the snap package
|
|
echo "Installing snap package: $line"
|
|
sudo snap install "$line"
|
|
|
|
# Check if the installation was successful
|
|
if [ $? -eq 0 ]; then
|
|
echo "$line installed successfully!"
|
|
else
|
|
echo "Failed to install $line"
|
|
fi
|
|
done < "$SNAP_APPS_FILE"
|
|
|
|
echo "All snap packages have been processed."
|
|
|
|
|
|
}
|
|
|
|
# Check with sudo
|
|
if sudo [ -f "$REFINDCONF" ]; then
|
|
echo "The file '$REFINDCONF' exists, skipping refind installation"
|
|
else
|
|
echo "refind not installed, installing now"
|
|
install_secureboot
|
|
install_theme
|
|
fi
|
|
|
|
|
|
read -p "Do you want to install Snap? (y/n): " answer
|
|
|
|
# Handle user input
|
|
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
|
# Install Snapd
|
|
install_snapd
|
|
|
|
# Install Snap packages
|
|
install_snap_apps
|
|
else
|
|
echo "Snap installation skipped"
|
|
fi
|