From 2b7f0d4bdc5365fd097e4f63c945cf395bad7327 Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Sat, 20 Jul 2024 18:01:22 +0100 Subject: [PATCH] init --- generic_install.sh | 790 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 790 insertions(+) create mode 100755 generic_install.sh diff --git a/generic_install.sh b/generic_install.sh new file mode 100755 index 0000000..6afe4da --- /dev/null +++ b/generic_install.sh @@ -0,0 +1,790 @@ +## curl -L -o generic_install.sh https://nurl.co/5v + +NVM="$HOME/.nvm" +NVM_VERSION="v0.39.7" +NODE_VERSION="--lts=iron" +DEV="$HOME/dev" +LIVE="$HOME/live" +STAGING="$HOME/staging" +SWAP="/swapfile" +WORK_DIR=$(mktemp -d) +MERCURY_BUILD="123.0.1" +MERCURY_CPU="AVX2" +THORIUM_BUILD="124.0.6367.218" +THORIUM_CPU="AVX2" +KOPIA_BUILD="0.17.0" +GOLAND_BUILD="2024.1.4" +WEBSTORM_BUILD="2024.1.5" +IDEAIC_BUILD="2024.1.4" +GOLANG_BUILD="1.22.4" +FERDIUM_BUILD="6.7.5" +NERDFONTS_VERSION="v3.0.2" +FLUTTER_BUILD="3.22.2" +LAPCE_BUILD="0.4.0" +NERDFONTS_URL="https://github.com/ryanoasis/nerd-fonts/releases/download/$NERDFONTS_VERSION/" +PKG_MANAGER=$(command -v yum || command -v apt-get) || echo "Neither yum nor apt-get found" +SNAP_MANAGER=$(command -v snap) || echo "No Snap Manager" +FLATPAK_MANAGER=$(command -v flatpak) || echo "No Flatpack Manager" +PKG_DEVICE=$(basename "$PKG_MANAGER") +SNAP_DEVICE=$(basename "$SNAP_MANAGER") +FLATPAK_DEVICE=$(basename "$FLATPAK_MANAGER") +pidof systemd && SYSTEMDCALL=1 || SYSTEMDCALL=0 +DISTRO=$(cat /etc/*-release | grep -w ID | cut -d= -f2 | tr -d '"' | grep -w debian) +CODENAME=$(lsb_release --codename --short) +ISSUE=$(cat /etc/issue) +OSSYSTEM=0 +if echo "$ISSUE" | grep -q "MX"; then + OSSYSTEM=1 + echo "Working on MXLINUX" +fi +DATABASE=no +NGINX=no + +FONTADDRESS="https://cloud.caliban.io/index.php/s/FeLWYZCamZyptwC/download/fonts.zip" +CURSORADDRESS="https://cloud.caliban.io/index.php/s/R5iC99T6qLiicJG/download/128152-AmigaClassicRed.zip" +RED=$(tput setaf 1) +GREEN=$(tput setaf 10) +YELLOW=$(tput setaf 11) +PURPLE=$(tput setaf 13) +RESET=$(tput sgr0) +NC='\033[0m' +BLACK='\033[1;30m' +RED='\033[1;31m' +GREEN='\033[1;32m' +YELLOW='\033[1;33m' +BLUE='\033[1;34m' +PURPLE='\033[1;35m' +CYAN='\e[1;96m' +WHITE='\033[1;37m' +RESET='\033[0m' +fancy_echo() { + local fmt="$1" + shift + printf "\n$fmt\n" "$@" +} +add_line() { + FILE=$1 + LINE=$2 + grep -qF "$LINE" "$FILE" || echo "$LINE" | sudo -S tee --append "$FILE" +} +function checkSUDO() { + if [[ $sudoPW == "" ]]; then + read -s -p "Enter Password for sudo: " sudoPW + fi +} +fetch() { + fhost=$(uname -n) + fuser=$(whoami) + fkernel=$(uname -r) + fupTime=$(uptime --pretty | sed -e 's/up//;s/^ *//') + fos=$(awk -F '"' '/PRETTY/ {print $2}' /etc/os-release | tr -d '\n') + farch=$(uname -m) + fcpu=$(awk -F: '/model name/{print $2 ; exit}' /proc/cpuinfo | sed 's/\//g;s/^ *//' | tr -d '\n') + fgpu=$(lspci | grep -i --color 'vga\|3d\|2d' | sed 's/VGA compatible controller//;s/Advanced Micro Devices, Inc//;s/NVIDIA Corporation//' | tr -d '.:[]' | sed 's/^.....//;s/^ *//') + fram=$(awk '/MemTotal:/ {printf "%d MiB\n", $2 / 1024}' /proc/meminfo | tr -d '\n') + shell="$(echo "$SHELL" | sed 's%.*/%%')" + term="$(pstree -sA $$)" + term="$(echo "${term%---$shell*}")" + term="$(echo ${term##*---})" + echo -ne "\e[3m$PURPLE$fuser$NC\e[0m" + echo -e "\e[3m@$YELLOW$fhost$NC\e[0m" + echo -e "${BLUE}kernel$NC ~ $fkernel" + echo -e "${CYAN}uptime$NC ~ $fupTime" + echo -ne "${GREEN}os$NC ~ $fos" + echo -ne " \e \e \e \e " + echo -e "${PURPLE}arch$NC ~ $farch" + if test -e /usr/share/xsessions/; then + echo -ne "${YELLOW}de/wm$NC ~ " + awk '/^DesktopNames/' /usr/share/xsessions/* | sed 's/DesktopNames=//g' | sed 's/\;/\n/g' | sed '/^$/d' | sort -u | sed ':a;N;$!ba;s/\n/, /g' | tr -d "\n" + fi + if test -e ~/.config/gtk-3.0/; then + echo -ne " \e \e \e \e " + echo -ne "${BLUE}theme$NC ~ " + grep 'gtk-theme-name' ~/.config/gtk-3.0/* | sed 's/gtk-theme-name=//g' | sed 's/-/ /g' + fi + echo -ne "${RED}cpu$NC ~ $fcpu" + if test -e /sys/devices/system/cpu; then + sort -rn /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq | head -n1 | sed 's/......$/.&/;s/...$//;s/^/@/' | tr -d '\n' + echo " GHz" + fi + echo -e "${PURPLE}gpu$NC ~ $fgpu" + echo -ne "${BLUE}pkgs$NC ~ " + if [[ $(command -v pacman) ]]; then + pacman -Q | wc -l + elif [[ $(command -v dpkg-query) ]]; then + dpkg-query -l | grep -c '^.i' + else + echo not found + fi + echo -ne "${CYAN}ram$NC ~ $fram" + swap_kb=$(awk '{print $3}' /proc/swaps | sed '1d') + let "swap_mb = $swap_kb / 1024" + if test -e /proc/swaps; then + echo -ne " \e \e \e \e " + echo -ne "${YELLOW}swap$NC ~ " + echo $swap_mb MiB + fi + echo -ne "${GREEN}term$NC ~ " + echo "$term" | tr -d "\n" + echo -ne " \e \e \e \e " + echo -ne "${RED}shell$NC ~ " + echo "$shell" +} +if [[ ! $WORK_DIR || ! -d $WORK_DIR ]]; then + echo "Could not create temp dir" + exit 1 +else + cd "$WORK_DIR" +fi +function cleanup() { + rm -rf "$WORK_DIR" + fancy_echo "${YELLOW}Deleted temp working directory $WORK_DIR$RESET" +} +function updateApt() { + echo $sudoPW | sudo -S apt-get -y -q --assume-yes update +} +get_latest_release() { + curl --silent "https://api.github.com/repos/$1/releases/latest" | jq -r .tag_name +} +function installLazyDocker() { + fancy_echo "${YELLOW}Installing LazyDocker...$RESET" + DIR="${DIR:-"$HOME/.local/bin"}" + ARCH=$(uname -m) + case $ARCH in + i386 | i686) ARCH=x86 ;; + armv6*) ARCH=armv6 ;; + armv7*) ARCH=armv7 ;; + aarch64*) ARCH=arm64 ;; + esac + GITHUB_LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/jesseduffield/lazydocker/releases/latest | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') + GITHUB_FILE="lazydocker_${GITHUB_LATEST_VERSION//v/}_$(uname -s)_$ARCH.tar.gz" + GITHUB_URL="https://github.com/jesseduffield/lazydocker/releases/download/$GITHUB_LATEST_VERSION/$GITHUB_FILE" + curl -L -o lazydocker.tar.gz $GITHUB_URL + tar xzvf lazydocker.tar.gz lazydocker + install -Dm 755 lazydocker -t "$DIR" + rm lazydocker lazydocker.tar.gz +} +function show_latest() { + echo "Mercury:$(get_latest_release Alex313031/Mercury)" + echo "Thorium:$(get_latest_release Alex313031/thorium)" + echo "Ferdium:$(get_latest_release ferdium/ferdium-app)" + echo "Nvm:$(get_latest_release nvm-sh/nvm)" + echo "Kopia:$(get_latest_release kopia/kopia)" +} + +function installMercury() { + if [ $OSSYSTEM -eq 1 ]; then + checkSUDO + echo -e "${CYAN}Installing Mercury...$NC" + curl -L -o mercury-browser.deb "https://github.com/Alex313031/Mercury/releases/download/v.$MERCURY_BUILD/mercury-browser_${MERCURY_BUILD}_$MERCURY_CPU.deb" + echo $sudoPW | sudo -S apt install ./mercury-browser.deb --assume-yes + fi +} +function installThorium() { + if [ $OSSYSTEM -eq 1 ]; then + checkSUDO + echo -e "${CYAN}Installing Thorium...$NC" + curl -L -o thorium-browser.deb "https://github.com/Alex313031/thorium/releases/download/M$THORIUM_BUILD/thorium-browser_${THORIUM_BUILD}_$THORIUM_CPU.deb" + echo $sudoPW | sudo -S apt install ./thorium-browser.deb --assume-yes + export CHROME_EXECUTABLE=/usr/bin/thorium-browser + LINE='CHROME_EXECUTABLE=/usr/bin/thorium-browser' + FILE="$HOME/.exports" + grep -qF "$LINE" "$FILE" || echo "$LINE" | tee --append "$FILE" + fi +} +function installFerdium() { + if [ $OSSYSTEM -eq 1 ]; then + checkSUDO + echo -e "\n${CYAN}Installing Ferdium...$NC" + curl -L -o ferdium.deb "https://github.com/ferdium/ferdium-app/releases/download/v$FERDIUM_BUILD/Ferdium-linux-$FERDIUM_BUILD-amd64.deb" + echo $sudoPW | sudo -S apt install ./ferdium.deb --assume-yes + fi +} + +function installLapce() { + if [ $OSSYSTEM -eq 1 ]; then + checkSUDO + echo -e "\n${CYAN}Installing Lapce...$NC" + curl -L -o lapce.deb "https://github.com/lapce/lapce/releases/download/v$LAPCE_BUILD/lapce.debian.bookworm.amd64.deb" + echo $sudoPW | sudo -S apt install ./lapce.deb --assume-yes + fi +} + +function download_fonts() { + curl -s https://api.github.com/repos/ryanoasis/nerd-fonts/releases | jq -r '.[0].assets[] | select(.browser_download_url | endswith(".zip")) | .browser_download_url' | parallel --bar -t -- curl -sLOC - {} +} +function download_install_script() { + rm -f install.sh + curl -OL https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/install.sh + chmod +x install.sh +} +function remove_old_stuff() { + rm -rf "$HOME/patched-fonts" && mkdir -p "$HOME/patched-fonts" +} +function installNerdFonts() { + fancy_echo "${YELLOW}Installing NerdFonts...$RESET" + download_fonts + download_install_script + ls -1b | parallel -- unzip -o {} \*.\[ot\]tf -d "$HOME/.fonts/{.}" +} +function getDotFiles() { + fancy_echo "${YELLOW}Installing Dot files...$RESET" + DOTALIAS="https://cloud.caliban.io/index.php/s/MLgwngKGApKzJA2/download/_aliases" + DOTBASHPROMPT="https://cloud.caliban.io/index.php/s/kyC3GLmkt8aM5x2/download/_bash_prompt" + DOTEXPORTS="https://cloud.caliban.io/index.php/s/69tNTcFrGMH2GqN/download/_exports" + DOTFUNCTIONS="https://cloud.caliban.io/index.php/s/rtSR3ZR77EXQWZG/download/_functions" + DOTGITCONFIG="https://cloud.caliban.io/index.php/s/rtE3wD2reakww3b/download/_gitconfig" + DOTGITIGNORE="https://cloud.caliban.io/index.php/s/Qj6F7x8WossYtYN/download/_gitignore" + DOTPATH="https://cloud.caliban.io/index.php/s/M6mdGg4QRDpzD6d/download/_path" + PROFILEIMPORTER="https://cloud.caliban.io/index.php/s/cNFiaeEsZ8R58TW/download/profile_importer.sh" + curl -L -o "$HOME/.aliases" $DOTALIAS + curl -L -o "$HOME/.bash_prompt" $DOTBASHPROMPT + curl -L -o "$HOME/.exports" $DOTEXPORTS + curl -L -o "$HOME/.functions" $DOTFUNCTIONS + curl -L -o "$HOME/.gitconfig" $DOTGITCONFIG + curl -L -o "$HOME/.gitignore" $DOTGITIGNORE + curl -L -o "$HOME/.path" $DOTPATH + curl -L -o "$HOME/profile_importer.sh" $PROFILEIMPORTER + chmod u+x "$HOME/profile_importer.sh" + LINE='source "$HOME/profile_importer.sh"' + FILE="$HOME/.bashrc" + grep -qF "$LINE" "$FILE" || echo "$LINE" | tee --append "$FILE" +} +function installFlutter() { + fancy_echo "${YELLOW}Installing Flutter...$RESET" + checkSUDO + echo $sudoPW | sudo -S apt --assume-yes install curl git unzip xz-utils zip libglu1-mesa + echo $sudoPW | sudo -S apt --assume-yes install libc6:amd64 libstdc++6:amd64 libbz2-1.0:amd64 libncurses5:amd64 + echo $sudoPW | sudo -S apt --assume-yes install clang cmake pkg-config libgtk-3-dev + curl -L -o flutter_linux.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_$FLUTTER_BUILD-stable.tar.xz" + echo $sudoPW | sudo -S mkdir -p /usr/bin/ + echo $sudoPW | sudo -S tar -xf ./flutter_linux.tar.xz -C /usr/bin/ + LINE='PATH=/usr/bin/flutter/bin:$PATH' + FILE="$HOME/.path" + grep -qF "$LINE" "$FILE" || echo "$LINE" | tee --append "$FILE" +} +function installGO() { + fancy_echo "${PURPLE}Installing Go...$RESET" + checkSUDO + curl -L -o go.tar.gz "https://go.dev/dl/go$GOLANG_BUILD.linux-amd64.tar.gz" + echo $sudoPW | sudo -S rm -rf /usr/local/go + echo $sudoPW | sudo -S tar -C /usr/local -xzf ./go.tar.gz +} +function installIcons() { + fancy_echo "${PURPLE}Installing Icons...$RESET" + checkSUDO + wget -qO- https://git.io/papirus-icon-theme-install | DESTDIR="/usr/share/icons/" sh +} +function setupHomeDirs() { + if [ ! -d "$DEV" ]; then + mkdir -p $DEV + fi + if [ ! -d "$LIVE" ]; then + mkdir -p $LIVE + fi + if [ ! -d "$STAGING" ]; then + rm -rf $STAGING + mkdir -p $STAGING + else + mkdir -p $STAGING + fi +} +function doUpdates() { + fancy_echo "${PURPLE}Updating system packages$RESET" + checkSUDO + if [ $(basename $PKG_MANAGER) = "yum" ]; then + echo $sudoPW | sudo -S yum --assumeyes upgrade + echo $sudoPW | sudo -S yum --assumeyes install deltarpm psmisc + echo $sudoPW | sudo -S yum --assumeyes install git make automake gcc gcc-c++ kernel-devel nginx htop screen wget curl pi-bluetooth + else + echo $sudoPW | sudo -S apt-get -y -q --assume-yes update + echo $sudoPW | sudo -S apt-get -y -q --assume-yes upgrade + echo $sudoPW | sudo -S apt-get -y -q --assume-yes clean + echo $sudoPW | sudo -S apt autoremove --assume-yes + echo $sudoPW | sudo -S apt autoclean --assume-yes + fi + if [[ $SNAP_DEVICE == "snap" ]]; then + fancy_echo "${PURPLE}Updating Snaps$RESET" + echo $sudoPW | sudo -S snap refresh + fi + if [[ $FLATPAK_DEVICE == 'flatpak' ]]; then + fancy_echo "${PURPLE}Updating Flatpak$RESET" + flatpak update -y + flatpak uninstall --unused -y + fi +} + + +function installServer() { + fancy_echo "${YELLOW}Installing Base Server ...$RESET" + checkSUDO + setupHomeDirs + echo $sudoPW | sudo -S apt --assume-yes install auto-apt-proxy + sleep 5 + echo $sudoPW | sudo -S apt --assume-yes install build-essential screen wget curl htop git + echo $sudoPW | sudo -S apt --assume-yes install cifs-utils + echo $sudoPW | sudo -S apt --assume-yes install software-properties-common + if [ $DISTRO = "debian" ]; then + echo $sudoPW | sudo -S add-apt-repository --yes "deb [arch=$(dpkg --print-architecture)] http://ftp.debian.org/$DISTRO $( lsb_release --codename --short)-backports main" + sleep 5 + echo $sudoPW | sudo -S apt --assume-yes install btop + fi + if [ $OSSYSTEM -eq 0 ]; then + echo $sudoPW | sudo -S apt --assume-yes install ubuntu-restricted-addons flatpak git htop + fi + echo $sudoPW | sudo -S apt -y -q --assume-yes clean + echo $sudoPW | sudo -S apt autoremove --assume-yes + echo $sudoPW | sudo -S apt autoclean --assume-yes + if [ $OSSYSTEM -eq 0 ]; then + echo $sudoPW | sudo -S flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + fi + if [[ ! -f "$HOME/opt" ]]; then + mkdir $HOME/opt + fi + if [[ ! -f "$HOME/.aliases" ]]; then + getDotFiles + fi +} + +function instalExternalServer() { + fancy_echo "${YELLOW}Installing Base Server ...$RESET" + checkSUDO + setupHomeDirs + echo $sudoPW | sudo -S apt --assume-yes install build-essential screen wget curl htop git + echo $sudoPW | sudo -S apt --assume-yes install software-properties-common + + + if [ $DISTRO = "debian" ]; then + echo $sudoPW | sudo -S add-apt-repository --yes "deb [arch=$(dpkg --print-architecture)] http://ftp.debian.org/$DISTRO $( lsb_release --codename --short)-backports main" + sleep 5 + echo $sudoPW | sudo -S apt --assume-yes install btop + fi + if [ $OSSYSTEM -eq 0 ]; then + echo $sudoPW | sudo -S apt --assume-yes install ubuntu-restricted-addons flatpak git htop + fi + + echo $sudoPW | sudo -S apt -y -q --assume-yes clean + echo $sudoPW | sudo -S apt autoremove --assume-yes + echo $sudoPW | sudo -S apt autoclean --assume-yes + + if [[ ! -f "$HOME/opt" ]]; then + mkdir $HOME/opt + fi + if [[ ! -f "$HOME/.aliases" ]]; then + getDotFiles + fi + +} + +function installFail2Ban() { + fancy_echo "${YELLOW}Installing Fail2Ban ...$RESET" + checkSUDO + + echo $sudoPW | sudo -S apt --assume-yes install fail2ban + + echo $sudoPW | sudo -S cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local + echo $sudoPW | sudo -S cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local + + echo $sudoPW | sudo -S systemctl enable fail2ban.service +} + +function installUnattendedUpgrades() { + fancy_echo "${YELLOW}Installing Unattended Upgrades ...$RESET" + checkSUDO + + echo $sudoPW | sudo -S apt install unattended-upgrades + + echo $sudoPW | sudo -S systemctl enable unattended-upgrades + + echo $sudoPW | sudo -S systemctl start unattended-upgrades + +} + +function installUFW() { + fancy_echo "${YELLOW}Installing UFW ...$RESET" + checkSUDO + + echo $sudoPW | sudo -S apt --assume-yes install ufw + + echo $sudoPW | sudo -S ufw default allow outgoing + echo $sudoPW | sudo -S ufw default deny incoming + + echo $sudoPW | sudo -S ufw allow ssh + echo $sudoPW | sudo -S ufw allow http + echo $sudoPW | sudo -S ufw allow https + echo $sudoPW | sudo -S ufw allow from 81.187.43.39 + + echo $sudoPW | sudo -S ufw enable + echo $sudoPW | sudo -S ufw status + + +} + + +function installRequired() { + fancy_echo "${YELLOW}Installing Required ...$RESET" + checkSUDO + setupHomeDirs + echo $sudoPW | sudo -S apt --assume-yes install auto-apt-proxy + sleep 5 + echo $sudoPW | sudo -S apt --assume-yes install build-essential nginx screen wget curl default-jdk trimage pandoc texlive + echo $sudoPW | sudo -S apt --assume-yes install redshift-gtk cifs-utils gnome-disk-utility + echo $sudoPW | sudo -S apt --assume-yes install software-properties-common ca-certificates gnupg parallel jq + if [ $DISTRO = "debian" ]; then + echo $sudoPW | sudo -S add-apt-repository --yes "deb [arch=$(dpkg --print-architecture)] http://ftp.debian.org/$DISTRO $( lsb_release --codename --short)-backports main" + sleep 5 + echo $sudoPW | sudo -S apt-get -y -q --assume-yes update + echo $sudoPW | sudo -S apt --assume-yes install btop + fi + if [ $OSSYSTEM -eq 0 ]; then + echo $sudoPW | sudo -S apt --assume-yes install ubuntu-restricted-addons flatpak git htop + fi + echo $sudoPW | sudo -S apt -y -q --assume-yes clean + echo $sudoPW | sudo -S apt autoremove --assume-yes + echo $sudoPW | sudo -S apt autoclean --assume-yes + if [ $OSSYSTEM -eq 0 ]; then + echo $sudoPW | sudo -S flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + fi + if [[ ! -f "$HOME/opt" ]]; then + mkdir $HOME/opt + fi + if [[ ! -f "$HOME/.aliases" ]]; then + getDotFiles + fi + if [[ ! $FLATPAK_DEVICE == 'flatpak' ]]; then + FLATPAK_MANAGER=$(command -v flatpak) || echo "No Flatpack Manager" + FLATPAK_DEVICE=$(basename $FLATPAK_MANAGER) + fi +} +function setupSwap() { + if [[ ! -f $SWAP ]]; then + fancy_echo "${YELLOW}Setting up swapfile...$RESET" + checkSUDO + echo $sudoPW | sudo -S fallocate -l 1G $SWAP + echo $sudoPW | sudo -S chmod 600 $SWAP + echo $sudoPW | sudo -S mkswap $SWAP + echo $sudoPW | sudo -S swapon $SWAP + add /swapfile/swapfile none swap defaults 0 0 to /etc/fstab + fi +} +function installNode() { + fancy_echo "${YELLOW}Installing Node...$RESET" + checkSUDO + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/$NVM_VERSION/install.sh | bash + export NVM_DIR=$NVM + [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" + source $HOME/.bashrc + source $NVM/nvm.sh + nvm install $NODE_VERSION + fancy_echo "${YELLOW}Installing Node Global Packages...$RESET" + npm install -g gulp npm-check npm-install-missing + npm install -g @angular/cli @vue/cli eslint prettier @ionic/cli + # pm2 update +} +function installAmd() { + fancy_echo "${YELLOW}Installing AMD...$RESET" + checkSUDO + echo $sudoPW | sudo -S apt-add-repository -r ppa:graphics-drivers/ppa --yes && sudo -S apt update --assume-yes && sudo -S apt upgrade --assume-yes && sudo -S apt autoremove --assume-yes && sudo -S apt autoclean --assume-yes + echo $sudoPW | sudo -S add-apt-repository ppa:oibaf/graphics-drivers --yes --enable-source + echo $sudoPW | sudo -S apt-get update --assume-yes + echo $sudoPW | sudo -S apt upgrade --assume-yes + echo $sudoPW | sudo -S dpkg --configure -a + echo $sudoPW | sudo -S dpkg-reconfigure lightdm + echo $sudoPW | sudo -S apt-get install mesa-vdpau-drivers +} +function removeAmd() { + fancy_echo "${RED}Removing AMD...$RESET" + checkSUDO + echo $sudoPW | sudo -S apt-get install aptitude ppa-purge --assume-yes + echo $sudoPW | sudo -S ppa-purge ppa:oibaf/graphics-drivers + echo $sudoPW | sudo -S apt update --assume-yes + echo $sudoPW | sudo -S apt upgrade --assume-yes +} +function installApps() { + fancy_echo "${YELLOW}Installing APPS...$RESET" + checkSUDO + if [[ $SNAP_DEVICE == 'snap' ]]; then + fancy_echo "${PURPLE}Installing SNAPS...$RESET" + fi + echo $sudoPW | sudo -S apt --assume-yes install autokey-gtk + if [ $OSSYSTEM -eq 0 ]; then + curl -L -o google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + echo $sudoPW | sudo -S apt install ./google-chrome-stable_current_amd64.deb + echo $sudoPW | sudo -S add-apt-repository --yes ppa:nextcloud-devs/client + echo $sudoPW | sudo -S apt-get update --assume-yes + echo $sudoPW | sudo -S apt-get install nextcloud-client --assume-yes + fi + if [ $OSSYSTEM -eq 1 ]; then + installMercury + installThorium + installFerdium + curl -L -o kopia-ui.deb "https://github.com/kopia/kopia/releases/download/v$KOPIA_BUILD/kopia-ui_${KOPIA_BUILD}_amd64.deb" + curl -L -o google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb + curl -L -o goodhosts.tar.gz https://github.com/goodhosts/cli/releases/download/v1.1.2/goodhosts-1.1.2-linux-amd64.tar.gz + echo $sudoPW | sudo -S apt-get install nextcloud-desktop --assume-yes + echo $sudoPW | sudo -S apt install ./kopia-ui.deb --assume-yes + fi + if [[ $FLATPAK_DEVICE == 'flatpak' ]]; then + fancy_echo "${PURPLE}Installing FLATPAKS...$RESET" + echo $sudoPW | sudo -S flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install flathub org.qownnotes.QOwnNotes -y + flatpak install flathub com.orama_interactive.Pixelorama -y + flatpak install flathub eu.scarpetta.PDFMixTool -y + flatpak install flathub no.mifi.losslesscut -y + flatpak install flathub org.freac.freac -y + flatpak install flathub org.kde.digikam -y + flatpak install flathub com.bitwarden.desktop -y + flatpak install flathub io.gitlab.Goodvibes -y + flatpak install flathub org.atheme.audacious -y + flatpak install flathub org.gnome.Evolution -y + flatpak install flathub org.videolan.VLC -y + flatpak install flathub org.zealdocs.Zeal -y + flatpak install flathub org.gnome.EasyTAG -y + flatpak install flathub org.gnome.Firmware -y + flatpak install flathub com.github.gijsgoudzwaard.image-optimizer -y + flatpak install flathub org.gnome.baobab -y + flatpak install flathub org.gnome.DejaDup -y + flatpak install flathub com.github.qarmin.czkawka -y + fi +} +function installDocker() { + fancy_echo "${PURPLE}Installing DOCKER For $DISTRO...$RESET" + checkSUDO + echo $sudoPW | sudo -S apt-get remove --yes --assume-yes docker docker.io containerd runc || true + echo $sudoPW | sudo -S apt-get remove --yes --assume-yes docker-engine || true + echo $sudoPW | sudo -S apt-get update --assume-yes + echo $sudoPW | sudo -S apt-get --yes --assume-yes --no-install-recommends install apt-transport-https ca-certificates cgroupfs-mount + echo $sudoPW | sudo -S apt-key adv --fetch-keys "https://download.docker.com/linux/$DISTRO/gpg" + echo $sudoPW | sudo -S add-apt-repository --yes "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$DISTRO $( lsb_release --codename --short) stable" + sleep 2 + echo $sudoPW | sudo -S apt-get update + echo $sudoPW | sudo -S apt-get --yes --assume-yes --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin + echo $sudoPW | sudo -S usermod --append --groups docker "$USER" + echo $sudoPW | sudo -S systemctl enable docker + echo $sudoPW | sudo -S systemctl enable docker.service + echo $sudoPW | sudo -S systemctl enable containerd.service + fancy_echo "${PURPLE}Docker installed successfully$RESET" + fancy_echo "${YELLOW}Waiting for Docker to start...$RESET" + sleep 5 + echo $sudoPW | sudo -S curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + echo $sudoPW | sudo -S chmod +x /usr/local/bin/docker-compose + echo $sudoPW | sudo -S curl -L https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose + installLazyDocker + fancy_echo "${PURPLE}Docker Compose installed successfully$RESET" +} +function installFonts() { + fancy_echo "${YELLOW}Installing Fonts...$RESET" + wget $FONTADDRESS -O $WORK_DIR/fonts.zip + if [[ ! -f "$HOME/.fonts" ]]; then + mkdir -p $HOME/.fonts + fi + unzip -o $WORK_DIR/fonts.zip -d $HOME/.fonts + echo $sudoPW | sudo -S fc-cache -vf +} +function installLaptop() { + fancy_echo "${YELLOW}Installing Laptop...$RESET" + checkSUDO + echo $sudoPW | sudo -S apt --assume-yes install tlp tlp-rdw + echo $sudoPW | sudo -S systemctl enable tlp + echo $sudoPW | sudo -S tlp start +} +function installMouse() { + fancy_echo "${YELLOW}Installing Mouse...$RESET" + wget $CURSORADDRESS -O $WORK_DIR/cursors.zip + if [[ ! -f "$HOME/.icons" ]]; then + mkdir $HOME/.icons + fi + unzip -o $WORK_DIR/cursors.zip -d $HOME/.icons +} +function installTheme() { + fancy_echo "${YELLOW}Installing Theme...$RESET" + checkSUDO + mkdir -p $HOME/.local/share/xfce4/terminal/colorschemes + wget https://cloud.caliban.io/index.php/s/SkjLjb62msiNp3m/download/colorschemes.zip + unzip -o ./colorschemes.zip -d $HOME/.local/share/xfce4/terminal/colorschemes/ + installIcons + if [[ ! -f "$HOME/.themes" ]]; then + mkdir $HOME/.themes + fi + wget https://cloud.caliban.io/index.php/s/LYb8MFLHdYorRYX/download/Desert-Teal-Blue-XFCE-1.3.zip -O $WORK_DIR/Desert-Teal-Blue-XFCE-1.3.zip + unzip -o $WORK_DIR/Desert-Teal-Blue-XFCE-1.3.zip -d $HOME/.themes + wget https://cloud.caliban.io/index.php/s/ps5qqY9DHybLzoW/download/stilo-theme.zip + echo $sudoPW | sudo -S unzip -o -d /usr/share/themes ./stilo-theme.zip +} +function installDevTools() { + fancy_echo "${PURPLE}Installing Devtools...$RESET" + checkSUDO + curl -L -o goland.tar.gz "https://download.jetbrains.com/go/goland-$GOLAND_BUILD.tar.gz" + curl -L -o webstorm.tar.gz https://download.jetbrains.com/webstorm/WebStorm-$WEBSTORM_BUILD.tar.gz + curl -L -o ideaIC.tar.gz https://download.jetbrains.com/idea/ideaIC-$IDEAIC_BUILD.tar.gz + curl -L -o code.deb 'https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64' + curl -L -o dbeaver-ce_latest_amd64.deb https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb + mkdir -p $HOME/opt/{goland,webstorm,ideaIC} + tar -xf ./goland.tar.gz -C $HOME/opt/goland + tar -xf ./webstorm.tar.gz -C $HOME/opt/webstorm + tar -xf ./ideaIC.tar.gz -C $HOME/opt/ideaIC + installLapce + echo $sudoPW | sudo -S apt install ./code.deb --assume-yes + echo $sudoPW | sudo -S apt install ./dbeaver-ce_latest_amd64.deb --assume-yes +} +function setupHosts() { + checkSUDO + if [ ! -f "/usr/bin/goodhosts" ]; then + fancy_echo "${PURPLE}Installing Goodhosts...$RESET" + curl -L -o goodhosts.tar.gz https://github.com/goodhosts/cli/releases/download/v1.1.2/goodhosts-1.1.2-linux-amd64.tar.gz + mkdir ./goodhosts-out + tar -xvf ./goodhosts.tar.gz -C ./goodhosts-out + echo $sudoPW | sudo -S cp ./goodhosts-out/goodhosts /usr/bin/ + fi + LOCALS=( + "sonarr.lan" + "transmission.lan" + "torrent.lan" + "radarr.lan" + "nextpvr.lan" + "ombi.lan" + "books.lan" + "menu.lan" + "links.lan" + "photos.lan" + "jobs.lan") + echo $sudoPW | sudo -S goodhosts a "192.168.1.102" "diskstation" + echo $sudoPW | sudo -S goodhosts a "192.168.0.204" "deepstore.lan" + echo $sudoPW | sudo -S goodhosts a "192.168.1.222" "docker.lan" + for host in "${LOCALS[@]}"; do + echo $sudoPW | sudo -S goodhosts a "192.168.1.159" "$host" + done +} +trap cleanup EXIT +for i in "$@"; do + case $i in + -u | --update) + doUpdates + shift + ;; + -d | --database) + DATABASE=YES + shift + ;; + -n | --nginx) + NGINX=YES + shift + ;; + -i | --install | --setup) + doUpdates + installRequired + installNode + shift + ;; + --install-server) + doUpdates + installServer + installDocker + shift + ;; + --install-external-server) + doUpdates + instalExternalServer + installUnattendedUpgrades + installUFW + installUnattendedUpgrades + installDocker + shift + ;; + --full-install) + doUpdates + installRequired + installNode + installMouse + installFonts + installTheme + installApps + installDocker + setupHosts + shift + ;; + --full-dev-install) + doUpdates + installRequired + installNode + installMouse + installFonts + installTheme + installApps + installDevTools + installDocker + setupHosts + shift + ;; + --install-amd) + doUpdates + installAmd + shift + ;; + --remove-amd) + doUpdates + removeAmd + shift + ;; + --install-fonts) + installFonts + shift + ;; + --install-theme) + installTheme + shift + ;; + --install-laptop) + installLaptop + shift + ;; + --install-mouse) + installMouse + shift + ;; + --install-apps) + doUpdates + installApps + shift + ;; + --install-docker) + installDocker + shift + ;; + --install-dev-tools) + doUpdates + installDevTools + shift + ;; + --show-latest) + show_latest + shift + ;; + --fetch) + fetch + exit + shift + ;; + --setup-hosts) + setupHosts + shift + ;; + --install-mercury) + installMercury + ;; + --install-flutter) + installFlutter + ;; + --install-ferdium) + installFerdium + ;; + --install-lapce) + installLapce + ;; + --default) + DEFAULT=YES + shift + ;; + *) ;; + esac +done