From 1e39d967c5c7706dac39dd5fc8628dfe7283ed24 Mon Sep 17 00:00:00 2001 From: Jeevitha Kannan K S Date: Fri, 8 Nov 2024 00:33:21 +0530 Subject: [PATCH] feat: Alpine linux support (#814) * Add basic apk to scripts * Add common service script * Fix alpine bugs * Add flatpak installations * chore: update scripts, add common-service-script to shellcheckrc --- .shellcheckrc | 3 +- .../Developer-tools/meld-setup.sh | 3 + .../Developer-tools/neovim-setup.sh | 3 + .../Developer-tools/vscode-setup.sh | 6 +- .../Developer-tools/vscodium-setup.sh | 6 +- .../applications-setup/alacritty-setup.sh | 3 + .../applications-setup/android-debloat.sh | 3 + .../tabs/applications-setup/browsers/brave.sh | 6 +- .../applications-setup/browsers/chromium.sh | 3 + .../applications-setup/browsers/firefox.sh | 3 + .../applications-setup/browsers/librewolf.sh | 6 +- core/tabs/applications-setup/browsers/lynx.sh | 3 + .../applications-setup/browsers/thorium.sh | 1 + .../applications-setup/browsers/waterfox.sh | 6 +- .../communication-apps/discord-setup.sh | 6 +- .../communication-apps/jitsi-setup.sh | 6 +- .../communication-apps/signal-setup.sh | 4 + .../communication-apps/telegram-setup.sh | 3 + .../communication-apps/thunderbird-setup.sh | 3 + core/tabs/applications-setup/docker-setup.sh | 14 +-- .../applications-setup/fastfetch-setup.sh | 3 + core/tabs/applications-setup/kitty-setup.sh | 3 + .../applications-setup/linutil-installer.sh | 7 ++ .../applications-setup/linutil-updater.sh | 7 ++ core/tabs/applications-setup/mybash-setup.sh | 3 + .../office-suites/libreoffice.sh | 3 + .../applications-setup/pdf-suites/evince.sh | 3 + .../applications-setup/pdf-suites/okular.sh | 3 + core/tabs/applications-setup/rofi-setup.sh | 3 + core/tabs/applications-setup/zsh-setup.sh | 3 + core/tabs/common-script.sh | 8 +- core/tabs/common-service-script.sh | 85 +++++++++++++++++++ core/tabs/security/firewall-baselines.sh | 3 + core/tabs/system-setup/compile-setup.sh | 3 + core/tabs/system-setup/gaming-setup.sh | 5 +- core/tabs/system-setup/system-cleanup.sh | 8 +- core/tabs/system-setup/system-update.sh | 6 ++ core/tabs/utils/bluetooth-control.sh | 14 ++- core/tabs/utils/create-bootable-usb.sh | 3 + core/tabs/utils/encrypt_decrypt_tool.sh | 3 + core/tabs/utils/numlock.sh | 46 +++++----- core/tabs/utils/ollama.sh | 2 +- core/tabs/utils/power-profile.sh | 3 + core/tabs/utils/samba-ssh-setup.sh | 24 +++--- core/tabs/utils/timeshift.sh | 5 +- core/tabs/utils/utility_functions.sh | 3 + core/tabs/utils/wifi-control.sh | 14 +-- 47 files changed, 298 insertions(+), 66 deletions(-) create mode 100644 core/tabs/common-service-script.sh diff --git a/.shellcheckrc b/.shellcheckrc index 0b882066..6bf273ee 100644 --- a/.shellcheckrc +++ b/.shellcheckrc @@ -1,2 +1,3 @@ external-sources=true -source=core/tabs/common-script.sh \ No newline at end of file +source=core/tabs/common-script.sh +source=core/tabs/common-service-script.sh \ No newline at end of file diff --git a/core/tabs/applications-setup/Developer-tools/meld-setup.sh b/core/tabs/applications-setup/Developer-tools/meld-setup.sh index 031a09ae..36c1cfe4 100644 --- a/core/tabs/applications-setup/Developer-tools/meld-setup.sh +++ b/core/tabs/applications-setup/Developer-tools/meld-setup.sh @@ -12,6 +12,9 @@ installMeld() { apt-get|nala) "$ESCALATION_TOOL" "$PACKAGER" -y install meld ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add meld + ;; *) checkFlatpak flatpak install -y flathub org.gnome.meld diff --git a/core/tabs/applications-setup/Developer-tools/neovim-setup.sh b/core/tabs/applications-setup/Developer-tools/neovim-setup.sh index ac0d2637..7b3a980c 100755 --- a/core/tabs/applications-setup/Developer-tools/neovim-setup.sh +++ b/core/tabs/applications-setup/Developer-tools/neovim-setup.sh @@ -29,6 +29,9 @@ installNeovim() { dnf|zypper) "$ESCALATION_TOOL" "$PACKAGER" install -y neovim ripgrep fzf python3-virtualenv luarocks golang ShellCheck git ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add neovim ripgrep fzf py3-virtualenv luarocks go shellcheck git + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/Developer-tools/vscode-setup.sh b/core/tabs/applications-setup/Developer-tools/vscode-setup.sh index 018616a6..3a9c7f0e 100644 --- a/core/tabs/applications-setup/Developer-tools/vscode-setup.sh +++ b/core/tabs/applications-setup/Developer-tools/vscode-setup.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installVsCode() { - if ! command_exists code; then + if ! command_exists com.visualstudio.code && ! command_exists code; then printf "%b\n" "${YELLOW}Installing VS Code..${RC}." case "$PACKAGER" in apt-get|nala) @@ -28,6 +28,10 @@ installVsCode() { printf "%b\n" '[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc' | "$ESCALATION_TOOL" tee /etc/yum.repos.d/vscode.repo > /dev/null "$ESCALATION_TOOL" "$PACKAGER" install -y code ;; + apk) + checkFlatpak + flatpak install -y flathub com.visualstudio.code + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/Developer-tools/vscodium-setup.sh b/core/tabs/applications-setup/Developer-tools/vscodium-setup.sh index 5b5615ca..d6c97212 100644 --- a/core/tabs/applications-setup/Developer-tools/vscodium-setup.sh +++ b/core/tabs/applications-setup/Developer-tools/vscodium-setup.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installVsCodium() { - if ! command_exists codium; then + if ! command_exists com.vscodium.codium && ! command_exists codium; then printf "%b\n" "${YELLOW}Installing VS Codium...${RC}" case "$PACKAGER" in apt-get|nala) @@ -26,6 +26,10 @@ installVsCodium() { printf "%b\n" "[gitlab.com_paulcarroty_vscodium_repo]\nname=download.vscodium.com\nbaseurl=https://download.vscodium.com/rpms/\nenabled=1\ngpgcheck=1\nrepo_gpgcheck=1\ngpgkey=https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/-/raw/master/pub.gpg\nmetadata_expire=1h" | "$ESCALATION_TOOL" tee -a /etc/yum.repos.d/vscodium.repo "$ESCALATION_TOOL" "$PACKAGER" install -y codium ;; + apk) + checkFlatpak + flatpak install -y flathub com.vscodium.codium + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/alacritty-setup.sh b/core/tabs/applications-setup/alacritty-setup.sh index 25558fed..8149ebae 100755 --- a/core/tabs/applications-setup/alacritty-setup.sh +++ b/core/tabs/applications-setup/alacritty-setup.sh @@ -9,6 +9,9 @@ installAlacritty() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm alacritty ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add alacritty + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y alacritty ;; diff --git a/core/tabs/applications-setup/android-debloat.sh b/core/tabs/applications-setup/android-debloat.sh index b4e1073a..63258023 100644 --- a/core/tabs/applications-setup/android-debloat.sh +++ b/core/tabs/applications-setup/android-debloat.sh @@ -15,6 +15,9 @@ install_adb() { dnf|zypper) "$ESCALATION_TOOL" "$PACKAGER" install -y android-tools ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add android-tools + ;; *) printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}" exit 1 diff --git a/core/tabs/applications-setup/browsers/brave.sh b/core/tabs/applications-setup/browsers/brave.sh index 8a7eab40..6618f0fe 100644 --- a/core/tabs/applications-setup/browsers/brave.sh +++ b/core/tabs/applications-setup/browsers/brave.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installBrave() { - if ! command_exists brave; then + if ! command_exists com.brave.Browser && ! command_exists brave; then printf "%b\n" "${YELLOW}Installing Brave...${RC}" case "$PACKAGER" in apt-get|nala) @@ -29,6 +29,10 @@ installBrave() { "$ESCALATION_TOOL" rpm --import https://brave-browser-rpm-release.s3.brave.com/brave-core.asc "$ESCALATION_TOOL" "$PACKAGER" install -y brave-browser ;; + apk) + checkFlatpak + flatpak install -y flathub com.brave.Browser + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/browsers/chromium.sh b/core/tabs/applications-setup/browsers/chromium.sh index e929dbc9..f9f14e74 100644 --- a/core/tabs/applications-setup/browsers/chromium.sh +++ b/core/tabs/applications-setup/browsers/chromium.sh @@ -9,6 +9,9 @@ if ! command_exists chromium; then pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm chromium ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add chromium + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y chromium ;; diff --git a/core/tabs/applications-setup/browsers/firefox.sh b/core/tabs/applications-setup/browsers/firefox.sh index 67980858..cd36b6c4 100644 --- a/core/tabs/applications-setup/browsers/firefox.sh +++ b/core/tabs/applications-setup/browsers/firefox.sh @@ -18,6 +18,9 @@ installFirefox() { dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y firefox ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add firefox + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/browsers/librewolf.sh b/core/tabs/applications-setup/browsers/librewolf.sh index a630b9c7..d8ed06b4 100644 --- a/core/tabs/applications-setup/browsers/librewolf.sh +++ b/core/tabs/applications-setup/browsers/librewolf.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installLibreWolf() { - if ! command_exists librewolf; then + if ! command_exists io.gitlab.librewolf-community && ! command_exists librewolf; then printf "%b\n" "${YELLOW}Installing Librewolf...${RC}" case "$PACKAGER" in apt-get|nala) @@ -32,6 +32,10 @@ Signed-By: /usr/share/keyrings/librewolf.gpg" | "$ESCALATION_TOOL" tee /etc/apt/ pacman) "$AUR_HELPER" -S --needed --noconfirm librewolf-bin ;; + apk) + checkFlatpak + flatpak install flathub io.gitlab.librewolf-community + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/browsers/lynx.sh b/core/tabs/applications-setup/browsers/lynx.sh index 002ff7e3..f9283691 100644 --- a/core/tabs/applications-setup/browsers/lynx.sh +++ b/core/tabs/applications-setup/browsers/lynx.sh @@ -9,6 +9,9 @@ installLynx() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm lynx ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add lynx + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y lynx ;; diff --git a/core/tabs/applications-setup/browsers/thorium.sh b/core/tabs/applications-setup/browsers/thorium.sh index c45ebc80..dd0b20ef 100644 --- a/core/tabs/applications-setup/browsers/thorium.sh +++ b/core/tabs/applications-setup/browsers/thorium.sh @@ -22,6 +22,7 @@ installThrorium() { ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" + exit 1 ;; esac else diff --git a/core/tabs/applications-setup/browsers/waterfox.sh b/core/tabs/applications-setup/browsers/waterfox.sh index 3cef5106..28ec96dc 100644 --- a/core/tabs/applications-setup/browsers/waterfox.sh +++ b/core/tabs/applications-setup/browsers/waterfox.sh @@ -3,14 +3,14 @@ . ../../common-script.sh installWaterfox() { - if ! command_exists waterfox; then + if ! command_exists net.waterfox.waterfox && ! command_exists waterfox; then printf "%b\n" "${YELLOW}Installing waterfox...${RC}" case "$PACKAGER" in pacman) - "$AUR_HELPER" -S --needed --noconfirm waterfox-bin + "$AUR_HELPER" -S --needed --noconfirm waterfox-bin ;; *) - . ../setup-flatpak.sh + checkFlatpak flatpak install -y flathub net.waterfox.waterfox ;; esac diff --git a/core/tabs/applications-setup/communication-apps/discord-setup.sh b/core/tabs/applications-setup/communication-apps/discord-setup.sh index 6c7a0a83..f96bd9f2 100644 --- a/core/tabs/applications-setup/communication-apps/discord-setup.sh +++ b/core/tabs/applications-setup/communication-apps/discord-setup.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installDiscord() { - if ! command_exists discord; then + if ! command_exists com.discordapp.Discord && ! command_exists discord; then printf "%b\n" "${YELLOW}Installing Discord...${RC}" case "$PACKAGER" in apt-get|nala) @@ -20,6 +20,10 @@ installDiscord() { "$ESCALATION_TOOL" "$PACKAGER" install -y https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm "$ESCALATION_TOOL" "$PACKAGER" install -y discord ;; + apk) + checkFlatpak + flatpak install -y flathub com.discordapp.Discord + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/communication-apps/jitsi-setup.sh b/core/tabs/applications-setup/communication-apps/jitsi-setup.sh index 2b6b4bbe..f6f2f200 100644 --- a/core/tabs/applications-setup/communication-apps/jitsi-setup.sh +++ b/core/tabs/applications-setup/communication-apps/jitsi-setup.sh @@ -3,7 +3,7 @@ . ../../common-script.sh installJitsi() { - if ! command_exists jitsi-meet; then + if ! command_exists org.jitsi.jitsi-meet && ! command_exists jitsi-meet; then printf "%b\n" "${YELLOW}Installing Jitsi meet...${RC}" case "$PACKAGER" in apt-get|nala) @@ -21,6 +21,10 @@ installJitsi() { dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y jitsi-meet ;; + apk) + checkFlatpak + flatpak install flathub org.jitsi.jitsi-meet + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/communication-apps/signal-setup.sh b/core/tabs/applications-setup/communication-apps/signal-setup.sh index cdd71b55..18c462b1 100644 --- a/core/tabs/applications-setup/communication-apps/signal-setup.sh +++ b/core/tabs/applications-setup/communication-apps/signal-setup.sh @@ -23,6 +23,10 @@ installSignal() { checkFlatpak flatpak install -y flathub org.signal.Signal ;; + apk) + checkFlatpak + flatpak install -y flathub org.signal.Signal + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/communication-apps/telegram-setup.sh b/core/tabs/applications-setup/communication-apps/telegram-setup.sh index a21b53e4..54916f60 100644 --- a/core/tabs/applications-setup/communication-apps/telegram-setup.sh +++ b/core/tabs/applications-setup/communication-apps/telegram-setup.sh @@ -9,6 +9,9 @@ installTelegram() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm telegram-desktop ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add telegram-desktop + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y telegram-desktop ;; diff --git a/core/tabs/applications-setup/communication-apps/thunderbird-setup.sh b/core/tabs/applications-setup/communication-apps/thunderbird-setup.sh index f49dcb78..f7e80e5a 100644 --- a/core/tabs/applications-setup/communication-apps/thunderbird-setup.sh +++ b/core/tabs/applications-setup/communication-apps/thunderbird-setup.sh @@ -9,6 +9,9 @@ installThunderBird() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm thunderbird ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add thunderbird + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y thunderbird ;; diff --git a/core/tabs/applications-setup/docker-setup.sh b/core/tabs/applications-setup/docker-setup.sh index 4844d10e..c4fc53ff 100755 --- a/core/tabs/applications-setup/docker-setup.sh +++ b/core/tabs/applications-setup/docker-setup.sh @@ -1,10 +1,10 @@ #!/bin/sh -e . ../common-script.sh +. ../common-service-script.sh # Function to prompt the user for installation choice choose_installation() { - clear printf "%b\n" "${YELLOW}Choose what to install:${RC}" printf "%b\n" "1. ${YELLOW}Docker${RC}" printf "%b\n" "2. ${YELLOW}Docker Compose${RC}" @@ -34,19 +34,20 @@ install_docker() { ;; zypper) "$ESCALATION_TOOL" "$PACKAGER" --non-interactive install docker - "$ESCALATION_TOOL" systemctl enable docker - "$ESCALATION_TOOL" systemctl start docker ;; pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm docker - "$ESCALATION_TOOL" systemctl enable docker - "$ESCALATION_TOOL" systemctl start docker + ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add docker ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 ;; esac + + startAndEnableService docker } install_docker_compose() { @@ -66,6 +67,9 @@ install_docker_compose() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm docker-compose ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add docker-cli-compose + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/fastfetch-setup.sh b/core/tabs/applications-setup/fastfetch-setup.sh index cb523441..5374805e 100644 --- a/core/tabs/applications-setup/fastfetch-setup.sh +++ b/core/tabs/applications-setup/fastfetch-setup.sh @@ -14,6 +14,9 @@ installFastfetch() { "$ESCALATION_TOOL" "$PACKAGER" install -y /tmp/fastfetch.deb rm /tmp/fastfetch.deb ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add fastfetch + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y fastfetch ;; diff --git a/core/tabs/applications-setup/kitty-setup.sh b/core/tabs/applications-setup/kitty-setup.sh index 85ef129b..c919969d 100755 --- a/core/tabs/applications-setup/kitty-setup.sh +++ b/core/tabs/applications-setup/kitty-setup.sh @@ -9,6 +9,9 @@ installKitty() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm kitty ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add kitty + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y kitty ;; diff --git a/core/tabs/applications-setup/linutil-installer.sh b/core/tabs/applications-setup/linutil-installer.sh index fd925e0b..7b02af7c 100755 --- a/core/tabs/applications-setup/linutil-installer.sh +++ b/core/tabs/applications-setup/linutil-installer.sh @@ -45,6 +45,13 @@ installLinutil() { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y . $HOME/.cargo/env ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add build-base + "$ESCALATION_TOOL" "$PACKAGER" add rustup + rustup-init + # shellcheck disable=SC1091 + . "$HOME/.cargo/env" + ;; *) curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y . $HOME/.cargo/env diff --git a/core/tabs/applications-setup/linutil-updater.sh b/core/tabs/applications-setup/linutil-updater.sh index 8cf1762d..4e399a02 100755 --- a/core/tabs/applications-setup/linutil-updater.sh +++ b/core/tabs/applications-setup/linutil-updater.sh @@ -19,6 +19,13 @@ updateLinutil() { curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh . $HOME/.cargo/env ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add build-base + "$ESCALATION_TOOL" "$PACKAGER" add rustup + rustup-init + # shellcheck disable=SC1091 + . "$HOME/.cargo/env" + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y rustup ;; diff --git a/core/tabs/applications-setup/mybash-setup.sh b/core/tabs/applications-setup/mybash-setup.sh index c09df01e..8cd98970 100644 --- a/core/tabs/applications-setup/mybash-setup.sh +++ b/core/tabs/applications-setup/mybash-setup.sh @@ -11,6 +11,9 @@ installDepend() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm bash bash-completion tar bat tree unzip fontconfig git ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add bash bash-completion tar bat tree unzip fontconfig git + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y bash bash-completion tar bat tree unzip fontconfig git ;; diff --git a/core/tabs/applications-setup/office-suites/libreoffice.sh b/core/tabs/applications-setup/office-suites/libreoffice.sh index f389abd8..a55bd183 100644 --- a/core/tabs/applications-setup/office-suites/libreoffice.sh +++ b/core/tabs/applications-setup/office-suites/libreoffice.sh @@ -16,6 +16,9 @@ installLibreOffice() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm libreoffice-fresh ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add libreoffice + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/applications-setup/pdf-suites/evince.sh b/core/tabs/applications-setup/pdf-suites/evince.sh index 9118d36d..7740b508 100644 --- a/core/tabs/applications-setup/pdf-suites/evince.sh +++ b/core/tabs/applications-setup/pdf-suites/evince.sh @@ -9,6 +9,9 @@ installEvince() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm evince ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add evince + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y evince ;; diff --git a/core/tabs/applications-setup/pdf-suites/okular.sh b/core/tabs/applications-setup/pdf-suites/okular.sh index 785d512c..ab618f08 100644 --- a/core/tabs/applications-setup/pdf-suites/okular.sh +++ b/core/tabs/applications-setup/pdf-suites/okular.sh @@ -9,6 +9,9 @@ installOkular() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm okular ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add okular + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y okular ;; diff --git a/core/tabs/applications-setup/rofi-setup.sh b/core/tabs/applications-setup/rofi-setup.sh index 24ce1a67..b4e2609a 100755 --- a/core/tabs/applications-setup/rofi-setup.sh +++ b/core/tabs/applications-setup/rofi-setup.sh @@ -9,6 +9,9 @@ installRofi() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm rofi ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add rofi + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y rofi ;; diff --git a/core/tabs/applications-setup/zsh-setup.sh b/core/tabs/applications-setup/zsh-setup.sh index a85b9240..65f090ec 100644 --- a/core/tabs/applications-setup/zsh-setup.sh +++ b/core/tabs/applications-setup/zsh-setup.sh @@ -10,6 +10,9 @@ installZsh() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm zsh ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add zsh + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y zsh ;; diff --git a/core/tabs/common-script.sh b/core/tabs/common-script.sh index d431c488..f8188ac3 100644 --- a/core/tabs/common-script.sh +++ b/core/tabs/common-script.sh @@ -123,6 +123,12 @@ checkPackageManager() { fi done + ## Enable apk community packages + if [ "$PACKAGER" = "apk" ] && grep -qE '^#.*community' /etc/apk/repositories; then + "$ESCALATION_TOOL" sed -i '/community/s/^#//' /etc/apk/repositories + "$ESCALATION_TOOL" "$PACKAGER" update + fi + if [ -z "$PACKAGER" ]; then printf "%b\n" "${RED}Can't find a supported package manager${RC}" exit 1 @@ -169,7 +175,7 @@ checkEnv() { checkArch checkEscalationTool checkCommandRequirements "curl groups $ESCALATION_TOOL" - checkPackageManager 'nala apt-get dnf pacman zypper' + checkPackageManager 'nala apt-get dnf pacman zypper apk' checkCurrentDirectoryWritable checkSuperUser checkDistro diff --git a/core/tabs/common-service-script.sh b/core/tabs/common-service-script.sh new file mode 100644 index 00000000..c3a2053d --- /dev/null +++ b/core/tabs/common-service-script.sh @@ -0,0 +1,85 @@ +#!/bin/sh -e + +checkInitManager() { + for manager in $1; do + if command_exists "$manager"; then + INIT_MANAGER="$manager" + printf "%b\n" "${CYAN}Using ${manager} to interact with init system${RC}" + break + fi + done + + if [ -z "$INIT_MANAGER" ]; then + printf "%b\n" "${RED}Can't find a supported init system${RC}" + exit 1 + fi +} + +startService() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" start "$1" + ;; + rc-service) + "$ESCALATION_TOOL" "$INIT_MANAGER" "$1" start + ;; + esac +} + +stopService() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" stop "$1" + ;; + rc-service) + "$ESCALATION_TOOL" "$INIT_MANAGER" "$1" stop + ;; + esac +} + +enableService() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" enable "$1" + ;; + rc-service) + "$ESCALATION_TOOL" rc-update add "$1" + ;; + esac +} + +disableService() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" disable "$1" + ;; + rc-service) + "$ESCALATION_TOOL" rc-update del "$1" + ;; + esac +} + +startAndEnableService() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" enable --now "$1" + ;; + rc-service) + enableService "$1" + startService "$1" + ;; + esac +} + +isServiceActive() { + case "$INIT_MANAGER" in + systemctl) + "$ESCALATION_TOOL" "$INIT_MANAGER" is-active --quiet "$1" + ;; + rc-service) + "$ESCALATION_TOOL" "$INIT_MANAGER" "$1" status --quiet + ;; + esac +} + +checkInitManager 'systemctl rc-service' \ No newline at end of file diff --git a/core/tabs/security/firewall-baselines.sh b/core/tabs/security/firewall-baselines.sh index 9c0810f4..54145ea7 100644 --- a/core/tabs/security/firewall-baselines.sh +++ b/core/tabs/security/firewall-baselines.sh @@ -9,6 +9,9 @@ installPkg() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm ufw ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add ufw + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y ufw ;; diff --git a/core/tabs/system-setup/compile-setup.sh b/core/tabs/system-setup/compile-setup.sh index 74a96a41..bb6bb44a 100755 --- a/core/tabs/system-setup/compile-setup.sh +++ b/core/tabs/system-setup/compile-setup.sh @@ -37,6 +37,9 @@ installDepend() { "$ESCALATION_TOOL" "$PACKAGER" --non-interactive install $DEPENDENCIES $COMPILEDEPS "$ESCALATION_TOOL" "$PACKAGER" --non-interactive install libgcc_s1-gcc7-32bit glibc-devel-32bit ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add build-base multitail tar tree trash-cli unzip cmake jq + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES ;; diff --git a/core/tabs/system-setup/gaming-setup.sh b/core/tabs/system-setup/gaming-setup.sh index 07673952..86bc9f5d 100755 --- a/core/tabs/system-setup/gaming-setup.sh +++ b/core/tabs/system-setup/gaming-setup.sh @@ -50,7 +50,8 @@ installDepend() { "$ESCALATION_TOOL" "$PACKAGER" -n install $DEPENDENCIES ;; *) - "$ESCALATION_TOOL" "$PACKAGER" install -y $DEPENDENCIES + printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}" + exit 1 ;; esac } @@ -95,6 +96,8 @@ installAdditionalDepend() { "$ESCALATION_TOOL" "$PACKAGER" -n install $DISTRO_DEPS ;; *) + printf "%b\n" "${RED}Unsupported package manager ${PACKAGER}${RC}" + exit 1 ;; esac } diff --git a/core/tabs/system-setup/system-cleanup.sh b/core/tabs/system-setup/system-cleanup.sh index 57b827b9..573751a0 100755 --- a/core/tabs/system-setup/system-cleanup.sh +++ b/core/tabs/system-setup/system-cleanup.sh @@ -1,6 +1,7 @@ #!/bin/sh -e . ../common-script.sh +. ../common-service-script.sh cleanup_system() { printf "%b\n" "${YELLOW}Performing system cleanup...${RC}" @@ -23,6 +24,9 @@ cleanup_system() { "$ESCALATION_TOOL" "$PACKAGER" -Sc --noconfirm "$ESCALATION_TOOL" "$PACKAGER" -Rns $(pacman -Qtdq) --noconfirm > /dev/null 2>&1 ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" cache clean + ;; *) printf "%b\n" "${RED}Unsupported package manager: ${PACKAGER}. Skipping.${RC}" ;; @@ -39,7 +43,9 @@ common_cleanup() { if [ -d /var/log ]; then "$ESCALATION_TOOL" find /var/log -type f -name "*.log" -exec truncate -s 0 {} \; fi - "$ESCALATION_TOOL" journalctl --vacuum-time=3d + if [ "$INIT_MANAGER" = "systemctl" ]; then + "$ESCALATION_TOOL" journalctl --vacuum-time=3d + fi } clean_data() { diff --git a/core/tabs/system-setup/system-update.sh b/core/tabs/system-setup/system-update.sh index c213156a..53f3a1df 100755 --- a/core/tabs/system-setup/system-update.sh +++ b/core/tabs/system-setup/system-update.sh @@ -48,6 +48,9 @@ fastUpdate() { "$ESCALATION_TOOL" "$PACKAGER" ref "$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" update + ;; *) printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}" exit 1 @@ -74,6 +77,9 @@ updateSystem() { "$ESCALATION_TOOL" "$PACKAGER" ref "$ESCALATION_TOOL" "$PACKAGER" --non-interactive dup ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" upgrade + ;; *) printf "%b\n" "${RED}Unsupported package manager: "$PACKAGER"${RC}" exit 1 diff --git a/core/tabs/utils/bluetooth-control.sh b/core/tabs/utils/bluetooth-control.sh index da7ee23d..6bfe266b 100644 --- a/core/tabs/utils/bluetooth-control.sh +++ b/core/tabs/utils/bluetooth-control.sh @@ -1,6 +1,7 @@ #!/bin/sh -e . ../common-script.sh +. ../common-service-script.sh # Function to check Bluez is installed setupBluetooth() { @@ -10,6 +11,9 @@ setupBluetooth() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --noconfirm bluez-utils ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add bluez + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y bluez ;; @@ -18,15 +22,7 @@ setupBluetooth() { printf "%b\n" "${GREEN}Bluez is already installed.${RC}" fi - # Check if bluetooth service is running - if ! systemctl is-active --quiet bluetooth; then - printf "%b\n" "${YELLOW}Bluetooth service is not running. Starting it now...${RC}" - "$ESCALATION_TOOL" systemctl start bluetooth - - if systemctl is-active --quiet bluetooth; then - printf "%b\n" "${GREEN}Bluetooth service started successfully.${RC}" - fi - fi + startService bluetooth } # Function to display the main menu diff --git a/core/tabs/utils/create-bootable-usb.sh b/core/tabs/utils/create-bootable-usb.sh index f05830d3..09b24d4d 100644 --- a/core/tabs/utils/create-bootable-usb.sh +++ b/core/tabs/utils/create-bootable-usb.sh @@ -12,6 +12,7 @@ list_devices() { printf "\n" } +# shellcheck disable=SC2086 installDependencies() { DEPENDENCIES="xz gzip bzip2 jq" if ! command_exists ${DEPENDENCIES}; then @@ -23,6 +24,8 @@ installDependencies() { "${ESCALATION_TOOL}" "${PACKAGER}" install -y ${DEPENDENCIES};; pacman) "${ESCALATION_TOOL}" "${PACKAGER}" -S --noconfirm --needed ${DEPENDENCIES};; + apk) + "${ESCALATION_TOOL}" "${PACKAGER}" add ${DEPENDENCIES};; *) printf "%b\n" "${RED}Unsupported package manager.${RC}" exit 1 diff --git a/core/tabs/utils/encrypt_decrypt_tool.sh b/core/tabs/utils/encrypt_decrypt_tool.sh index 46fead9d..40e006a2 100644 --- a/core/tabs/utils/encrypt_decrypt_tool.sh +++ b/core/tabs/utils/encrypt_decrypt_tool.sh @@ -19,6 +19,9 @@ if ! command_exists openssl; then zypper) "$ESCALATION_TOOL" "$PACKAGER" install openssl ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add openssl + ;; *) printf "%b\n" "${RED}Unsupported package manager: ""$PACKAGER""${RC}" exit 1 diff --git a/core/tabs/utils/numlock.sh b/core/tabs/utils/numlock.sh index f80ba3fb..a358b614 100755 --- a/core/tabs/utils/numlock.sh +++ b/core/tabs/utils/numlock.sh @@ -1,10 +1,11 @@ #!/bin/sh -e . ../common-script.sh +. ../common-service-script.sh create_file() { - printf "%b\n" "Creating script..." - "$ESCALATION_TOOL" tee "/usr/local/bin/numlock" >/dev/null <<'EOF' + printf "%b\n" "Creating script..." + "$ESCALATION_TOOL" tee "/usr/local/bin/numlock" >/dev/null <<'EOF' #!/bin/bash for tty in /dev/tty{1..6} @@ -13,12 +14,12 @@ do done EOF - "$ESCALATION_TOOL" chmod +x /usr/local/bin/numlock + "$ESCALATION_TOOL" chmod +x /usr/local/bin/numlock } create_service() { - printf "%b\n" "Creating service..." - "$ESCALATION_TOOL" tee "/etc/systemd/system/numlock.service" >/dev/null <<'EOF' + printf "%b\n" "Creating service..." + "$ESCALATION_TOOL" tee "/etc/systemd/system/numlock.service" >/dev/null <<'EOF' [Unit] Description=numlock @@ -33,23 +34,28 @@ EOF } numlockSetup() { - if [ ! -f "/usr/local/bin/numlock" ]; then - create_file - fi + if [ "$INIT_MANAGER" = "rc-service" ]; then + printf "%b\n" "${RED}Unsupported init system.${RC}" + exit 1 + fi - if [ ! -f "/etc/systemd/system/numlock.service" ]; then - create_service - fi + if [ ! -f "/usr/local/bin/numlock" ]; then + create_file + fi - printf "%b" "Do you want to enable Numlock on boot? (y/N): " - read -r confirm - if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then - "$ESCALATION_TOOL" systemctl enable numlock.service --quiet - printf "%b\n" "Numlock will be enabled on boot" - else - "$ESCALATION_TOOL" systemctl disable numlock.service --quiet - printf "%b\n" "Numlock will not be enabled on boot" - fi + if [ ! -f "/etc/systemd/system/numlock.service" ]; then + create_service + fi + + printf "%b" "Do you want to enable Numlock on boot? (y/N): " + read -r confirm + if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then + enableService numlock + printf "%b\n" "Numlock will be enabled on boot" + else + disableService numlock + printf "%b\n" "Numlock will not be enabled on boot" + fi } checkEnv diff --git a/core/tabs/utils/ollama.sh b/core/tabs/utils/ollama.sh index 35453ba3..6c18374a 100644 --- a/core/tabs/utils/ollama.sh +++ b/core/tabs/utils/ollama.sh @@ -11,7 +11,7 @@ installollama() { else printf "%b\n" "${YELLOW}Installing ollama...${RC}" curl -fsSL https://ollama.com/install.sh | sh - "$ESCALATION_TOOL" systemctl start ollama + startService ollama fi } diff --git a/core/tabs/utils/power-profile.sh b/core/tabs/utils/power-profile.sh index 536f7c69..1efdadcb 100644 --- a/core/tabs/utils/power-profile.sh +++ b/core/tabs/utils/power-profile.sh @@ -19,6 +19,9 @@ installAutoCpufreq() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm git ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add git + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y git ;; diff --git a/core/tabs/utils/samba-ssh-setup.sh b/core/tabs/utils/samba-ssh-setup.sh index 52004a27..aa0dc30e 100755 --- a/core/tabs/utils/samba-ssh-setup.sh +++ b/core/tabs/utils/samba-ssh-setup.sh @@ -11,6 +11,9 @@ install_package() { pacman) "$ESCALATION_TOOL" "$PACKAGER" -S --needed --noconfirm "$PACKAGE" ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add "$PACKAGE" + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y "$PACKAGE" ;; @@ -34,23 +37,23 @@ setup_ssh() { install_package openssh SSH_SERVICE="sshd" ;; + apk) + install_package openssh + SSH_SERVICE="sshd" + ;; *) install_package openssh-server SSH_SERVICE="sshd" ;; esac - # Enable and start the appropriate SSH service - "$ESCALATION_TOOL" systemctl enable "$SSH_SERVICE" - "$ESCALATION_TOOL" systemctl start "$SSH_SERVICE" + startAndEnableService "$SSH_SERVICE" - # Get the local IP address LOCAL_IP=$(ip -4 addr show | awk '/inet / {print $2}' | tail -n 1) printf "%b\n" "${GREEN}Your local IP address is: $LOCAL_IP${RC}" - # Check if SSH is running - if systemctl is-active --quiet "$SSH_SERVICE"; then + if isServiceActive "$SSH_SERVICE"; then printf "%b\n" "${GREEN}SSH is up and running.${RC}" else printf "%b\n" "${RED}Failed to start SSH.${RC}" @@ -130,12 +133,11 @@ setup_samba() { EOL fi - # Enable and start Samba services - "$ESCALATION_TOOL" systemctl enable smb nmb - "$ESCALATION_TOOL" systemctl start smb nmb + for service in smb nmb; do + startAndEnableService "$service" + done - # Check if Samba is running - if systemctl is-active --quiet smb && systemctl is-active --quiet nmb; then + if isServiceActive smb && isServiceActive nmb; then printf "%b\n" "${GREEN}Samba is up and running.${RC}" printf "%b\n" "${YELLOW}Samba share available at: $SHARED_DIR${RC}" else diff --git a/core/tabs/utils/timeshift.sh b/core/tabs/utils/timeshift.sh index afe2c71d..b38483e5 100644 --- a/core/tabs/utils/timeshift.sh +++ b/core/tabs/utils/timeshift.sh @@ -12,9 +12,12 @@ install_timeshift() { pacman) "$ESCALATION_TOOL" "${PACKAGER}" -S --noconfirm timeshift ;; - *) + dnf|zypper|apt-get|nala) "$ESCALATION_TOOL" "${PACKAGER}" install -y timeshift ;; + *) + printf "%b\n" "${RED}Unsupported package manager.${RC}" + ;; esac else printf "%b\n" "${GREEN}Timeshift is already installed.${RC}" diff --git a/core/tabs/utils/utility_functions.sh b/core/tabs/utils/utility_functions.sh index b9ed3127..09f33c60 100755 --- a/core/tabs/utils/utility_functions.sh +++ b/core/tabs/utils/utility_functions.sh @@ -13,6 +13,9 @@ setup_xrandr() { apt-get|nala) "$ESCALATION_TOOL" "$PACKAGER" install -y x11-xserver-utils ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add xrandr + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y xorg-x11-server-utils ;; diff --git a/core/tabs/utils/wifi-control.sh b/core/tabs/utils/wifi-control.sh index 14faec0a..d4ed2d10 100755 --- a/core/tabs/utils/wifi-control.sh +++ b/core/tabs/utils/wifi-control.sh @@ -1,6 +1,7 @@ #!/bin/sh -e . ../common-script.sh +. ../common-service-script.sh # Function to check if NetworkManager is installed setupNetworkManager() { @@ -13,6 +14,9 @@ setupNetworkManager() { dnf) "$ESCALATION_TOOL" "$PACKAGER" install -y NetworkManager-1 ;; + apk) + "$ESCALATION_TOOL" "$PACKAGER" add networkmanager-wifi iwd + ;; *) "$ESCALATION_TOOL" "$PACKAGER" install -y network-manager ;; @@ -22,13 +26,11 @@ setupNetworkManager() { fi # Check if NetworkManager service is running - if ! systemctl is-active --quiet NetworkManager; then + if ! isServiceActive NetworkManager; then printf "%b\n" "${YELLOW}NetworkManager service is not running. Starting it now...${RC}" - "$ESCALATION_TOOL" systemctl start NetworkManager - - if systemctl is-active --quiet NetworkManager; then - printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}" - fi + startService NetworkManager + else + printf "%b\n" "${GREEN}NetworkManager service started successfully.${RC}" fi }