From 8eb5bf7171e803974fee8bbcf07160b1af72a242 Mon Sep 17 00:00:00 2001 From: Anthony Axenov Date: Fri, 14 Apr 2023 12:06:40 +0800 Subject: [PATCH] wip --- Makefile | 34 ++++++----- helpers | 78 +++++++++++++++++-------- install/{apache => apache2} | 2 +- install/apt | 112 +++++++++++++++++------------------- install/canon-mg2500 | 20 ++++--- install/chrome | 24 +++++--- install/composer | 67 +++++++++------------ install/docker | 58 +++++++++---------- install/dots | 27 ++++----- install/droidcam | 31 +++++----- install/droidcam-obs | 6 +- install/flameshot | 15 +++++ install/flameshot-build | 8 --- install/git | 43 ++++++-------- install/golang | 36 ++++++------ install/grub-customizer | 15 +++++ install/grubc | 11 ---- install/jbmono | 4 +- install/kde-backports | 15 ++--- install/openvpn | 40 ++++++------- install/papirus | 41 ++++++------- install/pgsql | 22 ++++--- install/php-psalm | 6 +- install/php-spx | 6 +- install/phpcs | 6 +- install/phpmd | 6 +- install/phpstan | 6 +- install/phpunit | 6 +- install/postman | 37 ++++++------ install/telegram | 8 +-- install/youtube-dl | 4 +- install/ytdlcue | 4 +- install/zsh | 2 +- uninstall/apache2 | 13 +++++ uninstall/grub-customizer | 19 ++++++ uninstall/lite-xl | 8 +-- 36 files changed, 440 insertions(+), 400 deletions(-) rename install/{apache => apache2} (74%) create mode 100755 install/flameshot delete mode 100755 install/flameshot-build create mode 100755 install/grub-customizer delete mode 100755 install/grubc create mode 100755 uninstall/apache2 create mode 100755 uninstall/grub-customizer diff --git a/Makefile b/Makefile index d3bc5d5..41e1844 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,15 @@ -# Autogenerated at 12.04.2023 19:04 using ./gen-makefile +# Autogenerated at 17.04.2023 15:46 using ./gen-makefile .DEFAULT_GOAL := help #=============================================== # Scripts listed in ./install #=============================================== -##apache: Install apache2 (latest) -apache: - @./install/apache +##apache2: Install apache2 (latest) +apache2: + @./install/apache2 -##apt: Install bunch of software from apt +##apt: Install software from apt apt: @./install/apt @@ -33,7 +33,7 @@ docker: dots: @./install/dots -##droidcam: Install droidcam v1.8.2 +##droidcam: Install droidcam v1.9.0 droidcam: @./install/droidcam @@ -41,21 +41,21 @@ droidcam: droidcam-obs: @./install/droidcam-obs -##flameshot-build: [TODO] Build flameshot from src (latest) -flameshot-build: - @./install/flameshot-build +##flameshot: Install flameshot (latest) +flameshot: + @./install/flameshot ##git: Install git (latest) git: @./install/git -##golang: Install golang v1.18.3 +##golang: Install golang v1.20.3 golang: @./install/golang -##grubc: Install grub-customizer (latest) + ppa -grubc: - @./install/grubc +##grub-customizer: Install grub-customizer (latest + ppa) +grub-customizer: + @./install/grub-customizer ##jbmono: Install JetBrains Mono fonts jbmono: @@ -242,10 +242,18 @@ phpstack: php phptools # Scripts listed in ./uninstall #=============================================== +##/apache2: Uninstall apache2 +/apache2: + @./uninstall/apache2 + ##/docker: Uninstall docker + ppa /docker: @./uninstall/docker +##/grub-customizer: Uninstall grub-customizer with ppa +/grub-customizer: + @./uninstall/grub-customizer + ##/lite-xl: Uninstall lite-xl /lite-xl: @./uninstall/lite-xl diff --git a/helpers b/helpers index 25c27da..5dbcbe4 100644 --- a/helpers +++ b/helpers @@ -4,6 +4,40 @@ installed() { command -v "$1" >/dev/null 2>&1 } +installed2() { + dpkg --list | grep -qw "ii $1" +} + +apt_install() { + sudo apt install -y --autoremove "$*" +} + +require() { + sw=() + for package in "$@"; do + if ! installed "$package" && ! installed2 "$package"; then + sw+=("$package") + fi + done + if [ ${#sw[@]} -gt 0 ]; then + info "This packages will be installed in your system:\n${sw[*]}" + apt_install "${sw[*]}" + [ $? -gt 0 ] && die "installation cancelled" 201 + fi +} + +require2() { + sw=() + for package in "$@"; do + if ! installed "$package" && ! installed2 "$package"; then + sw+=("$package") + fi + done + if [ ${#sw[@]} -gt 0 ]; then + die "This packages must be installed in your system:\n${sw[*]}" 200 + fi +} + title() { [ "$1" ] && title="$1" || title="$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${BASH_SOURCE[1]})" info @@ -13,16 +47,13 @@ title() { info } -require() { - if ! installed "$1"; then - if [ "$2" ]; then - die "'$1' must to be installed in your system" 200 - else - info "Installing '$1' because it is required to continue" - sudo apt install "$1" - [ $? -gt 0 ] && die "installation cancelled" 201 - fi - fi +unpak_targz() { + require tar + tar -xzf "$1" -C "$2" +} + +symlink() { + ln -sf "$1" "$2" } download() { @@ -30,6 +61,16 @@ download() { wget "$1" -O "$2" } +clone() { + require git + git clone $* +} + +clone_quick() { + require git + git clone $* --depth=1 --single-branch +} + abspath() { echo $(realpath -q "${1/#\~/$HOME}") } @@ -132,7 +173,6 @@ debug() { fi } - verbose() { print "${BOLD}${IVRB}${RESET}${FYELLOW} $1 " } @@ -155,7 +195,6 @@ warn() { error() { print "${BOLD}${BLRED}${FWHITE}${IERROR} Error: ${BRESET}${FLRED} $1 " >&2 - # print_stacktrace } fatal() { @@ -164,19 +203,8 @@ fatal() { } die() { - error "$1" - [ "$2" ] && exit $2 || exit 100 -} - -die_fatal() { - fatal "$1" - [ "$2" ] && exit $2 || exit 100 -} - -die_help() { - error "$1" - [ "$2" ] && is_function "$2".help && $2.help - [ "$3" ] && exit $3 || exit 100 + error "${1:-halted}" + exit ${2:-100} } print_stacktrace() { diff --git a/install/apache b/install/apache2 similarity index 74% rename from install/apache rename to install/apache2 index 54c6e2c..5d3f6ac 100755 --- a/install/apache +++ b/install/apache2 @@ -1,6 +1,6 @@ #!/bin/bash ##makedesc: Install apache2 (latest) -[ -f `dirname $0`/../helpers ] && source `dirname $0`/../helpers || exit 255 +source `dirname $0`/../helpers || exit 255 title diff --git a/install/apt b/install/apt index da6fc4d..a660bcf 100755 --- a/install/apt +++ b/install/apt @@ -1,62 +1,58 @@ #!/bin/bash -##makedesc: Install bunch of software from apt +##makedesc: Install software from apt +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing software from apt..." -echo "===============================================" -echo +title sudo apt update && \ - sudo apt upgrade -y --autoremove - -sudo apt install -y \ - alien \ - apt-transport-https \ - build-essential \ - ca-certificates \ - cmake \ - curl \ - dconf-editor \ - default-jdk \ - dialog \ - gettext \ - gnupg \ - gparted \ - hardinfo \ - htop \ - libaio1 \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libghc-zlib-dev \ - libssl-dev \ - lsb-release \ - lsp-plugins \ - make \ - mc \ - meld \ - nano \ - neofetch \ - net-tools \ - nmap \ - p7zip-full \ - pulseeffects \ - software-properties-common \ - terminator \ - ubuntu-restricted-extras \ - unzip \ - vlc \ - ffmpeg \ - xclip \ - inotify-tools \ - notify-osd \ - fonts-open-sans \ - libnotify-bin - # sqlitebrowser - # earlyoom \ - # etckeeper \ - # geoclue-2.0 \ - # gnome-software \ - # minder \ - # redshift \ - # redshift-gtk + sudo apt upgrade -y --autoremove && \ + sudo apt install -y \ + alien \ + apt-transport-https \ + build-essential \ + ca-certificates \ + cmake \ + curl \ + dconf-editor \ + default-jdk \ + dialog \ + gettext \ + gnupg \ + gparted \ + hardinfo \ + htop \ + libaio1 \ + libcurl4-gnutls-dev \ + libexpat1-dev \ + libghc-zlib-dev \ + libssl-dev \ + lsb-release \ + lsp-plugins \ + make \ + mc \ + meld \ + nano \ + neofetch \ + net-tools \ + nmap \ + p7zip-full \ + pulseeffects \ + software-properties-common \ + terminator \ + ubuntu-restricted-extras \ + unzip \ + vlc \ + ffmpeg \ + xclip \ + inotify-tools \ + notify-osd \ + fonts-open-sans \ + libnotify-bin + # sqlitebrowser + # earlyoom \ + # etckeeper \ + # geoclue-2.0 \ + # gnome-software \ + # minder \ + # redshift \ + # redshift-gtk diff --git a/install/canon-mg2500 b/install/canon-mg2500 index eaf7942..7047e21 100755 --- a/install/canon-mg2500 +++ b/install/canon-mg2500 @@ -1,11 +1,17 @@ #!/bin/bash ##makedesc: Install Canon Pixma MG2500 + ppa +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing Canon Pixma MG2500 + ppa..." -echo "===============================================" -echo +title -sudo add-apt-repository -y ppa:thierry-f/fork-michael-gruz -sudo apt install -y cnijfilter-mg2500series scangearmp-mg2500series +sudo add-apt-repository -y ppa:thierry-f/fork-michael-gruz && \ + sudo apt install -y \ + cnijfilter-mg2500series \ + scangearmp-mg2500series + +[ $? = 0 ] && { + echo + success "Canon Pixma MG2500 installed!" + info "Now you must add a new printer in your system." + echo +} diff --git a/install/chrome b/install/chrome index 50c7ce3..47b8fdb 100755 --- a/install/chrome +++ b/install/chrome @@ -1,14 +1,20 @@ #!/bin/bash ##makedesc: Install google chrome (latest) - -echo -echo "===============================================" -echo "Installing google chrome (latest)..." -echo "===============================================" -echo +source `dirname $0`/../helpers || exit 255 # https://t.me/axenov_blog/251 -wget "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" -O /tmp/google-chrome-stable_current_amd64.deb && \ - sudo dpkg -i /tmp/google-chrome-stable_current_amd64.deb && \ - rm /tmp/google-chrome-stable_current_amd64.deb +title + +mkdir -p "$HOME/install" + +download "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" \ + "$HOME/install/google-chrome.deb" && \ + sudo dpkg -i "$HOME/install/google-chrome.deb" + +[ $? = 0 ] && { + echo + success "Google Chrome installed!" + google-chrome --version + echo +} diff --git a/install/composer b/install/composer index 6c1b6d4..70c890f 100755 --- a/install/composer +++ b/install/composer @@ -1,56 +1,41 @@ #!/bin/bash ##makedesc: Install composer (latest) -echo -echo "===============================================" -echo "Installing composer (latest)..." -echo "===============================================" -echo +source `dirname $0`/../helpers || exit 255 # https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md -installed() { - command -v "$1" >/dev/null 2>&1 -} +title -! installed "php" && echo "WARNING: You need php to be installed" +require php if installed "composer"; then - echo "WARNING: Removing current composer to install its actual version" + warn "WARNING: Removing current composer to install its actual version" sudo apt remove -y --autoremove composer - sudo rm -f $HOME/.local/bin/composer - sudo rm -f /bin/composer - sudo rm -f /usr/bin/composer - sudo rm -f /usr/local/bin/composer - sudo rm -f /usr/src/composer - rm $HOME/.local/bin/composer + sudo rm -f \ + "$HOME/.local/bin/composer" \ + /bin/composer \ + /usr/bin/composer \ + /usr/local/bin/composer \ + /usr/src/composer \ + "$HOME/.local/bin/composer" fi -mkdir -p $HOME/install $HOME/.local/bin -cd $HOME/install +mkdir -p "$HOME/install" "$HOME/.local/bin" +download "https://getcomposer.org/installer" "$HOME/install/composer-setup.php" && \ + php "$HOME/install/composer-setup.php" --install-dir="$HOME/.local/bin/composer" -EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')" -# php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -wget https://getcomposer.org/installer -O composer-setup.php -ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" -if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ]; then - >&2 echo 'ERROR: Invalid installer checksum' - rm composer-setup.php - exit 1 -fi -php composer-setup.php --quiet -mv -f $HOME/install/composer.phar $HOME/.local/bin/composer -cd - >/dev/null +[ $? = 0 ] && { + COMPOSER_GLOBAL_HOME="$($HOME/.local/bin/composer config -g home)" + NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" + cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { + $NEWPATH + echo "$NEWPATH" >> "$HOME/.profile" + } -COMPOSER_GLOBAL_HOME="$($HOME/.local/bin/composer config -g home)" -NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { - $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo + success "composer installed!" + composer --version + echo } -source "${HOME}/.profile" - -echo -echo "Finish!" -composer --version -echo +source "$HOME/.profile" diff --git a/install/docker b/install/docker index 357a486..aced031 100755 --- a/install/docker +++ b/install/docker @@ -1,41 +1,35 @@ #!/bin/bash ##makedesc: Install docker (latest) + docker-compose (latest) + ppa - -echo -echo "===============================================" -echo "Installing docker (latest)..." -echo "===============================================" -echo +source `dirname $0`/../helpers || exit 255 # https://docs.docker.com/engine/install/ubuntu/ -sudo apt install -y \ - ca-certificates \ - curl \ - gnupg \ - lsb-release +title + +require ca-certificates +require curl +require gnupg +require lsb-release sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg +| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg && \ + sudo chmod a+r /etc/apt/keyrings/docker.gpg && \ + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ + | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null && \ + sudo apt update && \ + sudo apt install -y --autoremove \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-compose-plugin && \ + sudo usermod -aG docker $(whoami) -sudo chmod a+r /etc/apt/keyrings/docker.gpg - -echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \ -| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - -sudo apt update -sudo apt install -y --autoremove \ - docker-ce \ - docker-ce-cli \ - containerd.io \ - docker-compose-plugin - -sudo usermod -aG docker $(whoami) - -echo -echo "Finish!" -docker --version -echo "Probably, you need to relogin to apply 'docker' group." -echo "Your ones currently are: $(groups)" -echo +[ $? = 0 ] && { + echo + success "Docker installed!" + info "Probably, you need to relogin to apply 'docker' group." + info "Your ones currently are: $(groups)" + docker --version + echo +} diff --git a/install/dots b/install/dots index 88e9b94..1806089 100755 --- a/install/dots +++ b/install/dots @@ -1,25 +1,22 @@ #!/bin/bash ##makedesc: Install dotfiles +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing dotfiles..." -echo "===============================================" -echo +title install_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" dotfiles_src_dir="`dirname $install_dir`/dotfiles" postfix=".bak-`date '+%Y%m%d%H%M'`" -install() { - echo "mv "$HOME/$1" "$HOME/$1$postfix"" - echo "cp "$dotfiles_src_dir/$1" "$HOME/$1"" - echo "- $1" +install_dotfile() { + mv "$HOME/$1" "$HOME/$1$postfix" + cp "$dotfiles_src_dir/$1" "$HOME/$1" + success "- $1" } -install .bash_aliases -install .profile -install .bashrc -install .gitconfig -install .gitignore -install .git_aliases +install_dotfile ".bash_aliases" && \ + install_dotfile ".profile" && \ + install_dotfile ".bashrc" && \ + install_dotfile ".gitconfig" && \ + install_dotfile ".gitignore" && \ + install_dotfile ".git_aliases" diff --git a/install/droidcam b/install/droidcam index d903461..94b629a 100755 --- a/install/droidcam +++ b/install/droidcam @@ -1,21 +1,22 @@ #!/bin/bash -##makedesc: Install droidcam v1.8.2 +##makedesc: Install droidcam v1.9.0 +source `dirname $0`/../helpers || exit 255 # https://www.dev47apps.com/droidcam/linux/ -echo -echo "===============================================" -echo "Installing droidcam v1.8.2..." -echo "===============================================" -echo +title -mkdir -p ~/install/droidcam -wget -O /tmp/droidcam.zip https://files.dev47apps.net/linux/droidcam_1.8.2.zip -unzip -oq /tmp/droidcam.zip -d ~/install/droidcam -rm -rf /tmp/droidcam.zip -cd ~/install/droidcam && sudo ./install-client +mkdir -p "$HOME/install/droidcam" -echo -echo "Finish!" -echo "Don't forget to install android app: https://play.google.com/store/apps/developer?id=Dev47Apps" -echo +download "https://files.dev47apps.net/linux/droidcam_1.9.0.zip" "$HOME/install/droidcam.zip" && \ + unzip -oq "$HOME/install/droidcam.zip" -d "$HOME/install/droidcam" && \ + cd "$HOME/install/droidcam" && \ + sudo ./install-client + +[ $? = 0 ] && { + echo + success "droidcam installed!" + info "Don't forget to install the android app:" + info "https://play.google.com/store/apps/developer?id=Dev47Apps" + echo +} diff --git a/install/droidcam-obs b/install/droidcam-obs index 5c9d6f3..3ba0e05 100755 --- a/install/droidcam-obs +++ b/install/droidcam-obs @@ -15,11 +15,11 @@ echo # command -v "obs" >/dev/null 2>&1 || echo 'You need to install obs first!' command -v "obs-studio" >/dev/null 2>&1 || echo 'You need to install obs-studio first!' -mkdir -p ~/install/droidcam-obs +mkdir -p $HOMEinstall/droidcam-obs wget -O /tmp/droidcam-obs.zip https://files.dev47apps.net/obs/droidcam_obs_1.5.1_linux.zip -unzip -oq /tmp/droidcam-obs.zip -d ~/install/droidcam-obs +unzip -oq /tmp/droidcam-obs.zip -d $HOMEinstall/droidcam-obs rm -rf /tmp/droidcam-obs.zip -cd ~/install/droidcam-obs && ./install.sh +cd $HOMEinstall/droidcam-obs && ./install.sh sudo modprobe v4l2loopback video_nr=2 card_label="OBS Virtual Camera" echo diff --git a/install/flameshot b/install/flameshot new file mode 100755 index 0000000..dfdef4a --- /dev/null +++ b/install/flameshot @@ -0,0 +1,15 @@ +#!/bin/bash +##makedesc: Install flameshot (latest) +source `dirname $0`/../helpers || exit 255 + +title + +sudo apt install -y --autoremove flameshot && \ + sudo systemctl restart flameshot + +[ $? = 0 ] && { + echo + success "flameshot installed!" + flameshot -v + echo +} diff --git a/install/flameshot-build b/install/flameshot-build deleted file mode 100755 index b9f672b..0000000 --- a/install/flameshot-build +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -##makedesc: [TODO] Build flameshot from src (latest) - -echo -echo "===============================================" -echo "Installing flameshot (latest)..." -echo "===============================================" -echo diff --git a/install/git b/install/git index 4eedad4..782dbfa 100755 --- a/install/git +++ b/install/git @@ -1,43 +1,38 @@ #!/bin/bash ##makedesc: Install git (latest) +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing git (latest)..." -echo "===============================================" -echo +title -installed() { - command -v "$1" >/dev/null 2>&1 -} - -! installed make && sudo apt install -y make +require make if installed git; then - if [ -d "${HOME}/install/git" ]; then - cd "${HOME}/install/git" && \ + if [ -d "$HOME/install/git" ]; then + cd "$HOME/install/git" && \ git pull else - git clone https://github.com/git/git.git --depth=1 "${HOME}/install/git" && \ - cd "${HOME}/install/git" + clone "https://github.com/git/git.git" "$HOME/install/git" --depth=1 --single-branch && \ + cd "$HOME/install/git" fi sudo make prefix=/usr/local all && \ sudo make prefix=/usr/local install else - ! installed wget && sudo apt install -y wget - [ -d "${HOME}/install/git" ] || mkdir -p "${HOME}/install/git" - wget https://github.com/git/git/archive/master.zip -O /tmp/git.zip && \ - unzip -oq /tmp/git.zip -d "${HOME}/install/git" && \ + require wget + mkdir -p "$HOME/install/git" + download "https://github.com/git/git/archive/master.zip" "/tmp/git.zip" && \ + unzip -oq "/tmp/git.zip" -d "$HOME/install/git" && \ rm /tmp/git.zip && \ - cd "${HOME}/install/git/git-master" && \ + cd "$HOME/install/git/git-master" && \ sudo make prefix=/usr/local all && \ sudo make prefix=/usr/local install && \ cd - && \ rm -rf git && \ - git clone https://github.com/git/git.git --depth=1 "${HOME}/install/git" + clone "https://github.com/git/git.git" "$HOME/install/git" --depth=1 --single-branch fi -echo -echo "Finish!" -git --version -echo +[ $? = 0 ] && { + echo + success "git installed!" + git --version + echo +} diff --git a/install/golang b/install/golang index 4dbb53e..a272a5b 100755 --- a/install/golang +++ b/install/golang @@ -1,30 +1,28 @@ #!/bin/bash -##makedesc: Install golang v1.18.3 +##makedesc: Install golang v1.20.3 +source `dirname $0`/../helpers || exit 255 # https://go.dev/dl/ # https://golang.org/doc/install # https://www.vultr.com/docs/install-the-latest-version-of-golang-on-ubuntu +[ $1 ] && VERSION="$1" || VERSION="1.20.3" +title "Installing golang v$VERSION..." -[ $1 ] && VERSION="$1" || VERSION="1.18.3" FILE="go$VERSION.linux-amd64.tar.gz" - -echo -echo "===============================================" -echo "Installing golang v$VERSION..." -echo "===============================================" -echo - sudo rm -rf /usr/local/go && \ - wget "https://golang.org/dl/$FILE" -O /tmp/$FILE && \ - sudo tar -xzf /tmp/$FILE -C /usr/local && \ - rm -rf /tmp/$FILE && \ + download "https://golang.org/dl/$FILE" "/tmp/$FILE" && \ + sudo tar -xzf "/tmp/$FILE" -C /usr/local && \ + rm -rf "/tmp/$FILE" && \ sudo chown $USER: -R /usr/local/go && \ - echo 'export PATH="$PATH:/usr/local/go/bin\"' >> $HOME/.profile && \ - echo 'export GOPATH="$HOME/.go"' >> $HOME/.profile + echo 'export PATH="$PATH:/usr/local/go/bin\"' >> "$HOME/.profile" && \ + echo 'export GOPATH="~/.go"' >> "$HOME/.profile" && \ + source ~/.profile -echo -echo "Finish!" -go version -echo "NOTE: now run 'source ~/.profile' to apply new env vars" -echo +[ $? = 0 ] && { + echo + success "golang installed!" + info "NOTE: now run 'source ~/.profile' to apply new env vars" + go --version + echo +} diff --git a/install/grub-customizer b/install/grub-customizer new file mode 100755 index 0000000..cfc0eeb --- /dev/null +++ b/install/grub-customizer @@ -0,0 +1,15 @@ +#!/bin/bash +##makedesc: Install grub-customizer (latest + ppa) +source `dirname $0`/../helpers || exit 255 + +title + +sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer && \ + sudo apt install -y --autoremove grub-customizer + +[ $? = 0 ] && { + echo + success "grub-customizer installed!" + grub-customizer -v + echo +} diff --git a/install/grubc b/install/grubc deleted file mode 100755 index 236fd10..0000000 --- a/install/grubc +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -##makedesc: Install grub-customizer (latest) + ppa - -echo -echo "===============================================" -echo "Installing grub-customizer (latest)..." -echo "===============================================" -echo - -sudo add-apt-repository -y ppa:danielrichter2007/grub-customizer -sudo apt install -y --autoremove grub-customizer diff --git a/install/jbmono b/install/jbmono index 73f28aa..b0f4173 100755 --- a/install/jbmono +++ b/install/jbmono @@ -1,14 +1,14 @@ #!/bin/bash ##makedesc: Install JetBrains Mono fonts -[ -f `dirname $0`/../helpers ] && source `dirname $0`/../helpers || exit 255 +source `dirname $0`/../helpers || exit 255 # https://www.jetbrains.com/lp/mono/#how-to-install title + require unzip mkdir -p "$HOME/install/jbmono" "$HOME/.local/share/fonts/" - download "https://download.jetbrains.com/fonts/JetBrainsMono-2.304.zip" "$HOME/install/jbmono.zip" && \ unzip -oj "$HOME/install/jbmono.zip" "fonts/ttf/*.ttf" -d "$HOME/.local/share/fonts/" && \ fc-cache -vf "$HOME/.local/share/fonts/" diff --git a/install/kde-backports b/install/kde-backports index a5401a4..57687e1 100755 --- a/install/kde-backports +++ b/install/kde-backports @@ -1,14 +1,9 @@ #!/bin/bash ##makedesc: Install KDE Backports +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing KDE Backports..." -echo "===============================================" -echo +title -sudo add-apt-repository -y ppa:kubuntu-ppa/backports -# sudo add-apt-repository -y ppa:kubuntu-ppa/backports-extra -sudo apt update -# sudo pkcon update -sudo apt full-upgrade +sudo add-apt-repository -y ppa:kubuntu-ppa/backports && \ + sudo apt update && \ + sudo apt full-upgrade diff --git a/install/openvpn b/install/openvpn index c392197..f52a536 100755 --- a/install/openvpn +++ b/install/openvpn @@ -1,37 +1,31 @@ #!/bin/bash -##makedesc: Install openvpn v2.5.8 (src) +##makedesc: Install openvpn v2.6.3 (src) +source `dirname $0`/../helpers || exit 255 # https://openvpn.net/community-downloads/ # https://openvpn.net/community-resources/installing-openvpn/ -[ $1 ] && OVPNVER="$1" || OVPNVER='2.5.8' +[ "$1" ] && OVPNVER="$1" || OVPNVER='2.6.3' -echo -echo "===============================================" -echo "Installing openvpn v${OVPNVER} (src)..." -echo "===============================================" -echo +title "Installing openvpn v${OVPNVER} (src)..." -set -ex - -sudo apt install -y \ - libssl-dev \ +require libssl-dev \ liblzo2-dev \ libpam0g-dev -mkdir -p "${HOME}/install/" -wget "https://swupdate.openvpn.org/community/releases/openvpn-${OVPNVER}.tar.gz" \ - -O "/tmp/openvpn-${OVPNVER}.tar.gz" -tar -xzf "/tmp/openvpn-${OVPNVER}.tar.gz" -C "${HOME}/install/" -cd "${HOME}/install/openvpn-${OVPNVER}" -sudo ./configure && \ +mkdir -p "$HOME/install/" +download "https://swupdate.openvpn.org/community/releases/openvpn-${OVPNVER}.tar.gz" "$HOME/install/openvpn-${OVPNVER}.tar.gz" && \ + unpak_targz "$HOME/install/openvpn-${OVPNVER}.tar.gz" "$HOME/install/" && \ + cd "$HOME/install/openvpn-${OVPNVER}" && \ + sudo ./configure && \ sudo make && \ sudo make install && - sudo apt install -y \ - network-manager-openvpn \ + apt_install network-manager-openvpn \ network-manager-openvpn-gnome -echo -echo "Finish!" -openvpn --version -echo +[ $? = 0 ] && { + echo + success "openvpn installed!" + openvpn --version + echo +} diff --git a/install/papirus b/install/papirus index ca7dfdd..1e576cb 100755 --- a/install/papirus +++ b/install/papirus @@ -1,34 +1,27 @@ #!/bin/bash ##makedesc: Install papirus-icon-theme (latest) +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing papirus-icon-theme (latest)..." -echo "===============================================" -echo +title -installed() { - command -v "$1" >/dev/null 2>&1 -} +mkdir -p "$HOME/install/papirus-icon-theme" "$HOME/.local/share/icons/" if installed git; then - mkdir -p "${HOME}/install/" - git clone https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git "${HOME}/install/papirus-icon-theme" --depth=1 --single-branch + clone_quick https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git "$HOME/install/" else - ! installed wget && sudo apt install -y wget - mkdir -p "${HOME}/install/papirus-icon-theme" - wget https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/refs/heads/master.zip -O "${HOME}/install/papirus-icon-theme.zip" - unzip -oq "${HOME}/install/papirus-icon-theme.zip" -d "${HOME}/install/papirus-icon-theme" - rm -f "${HOME}/install/papirus-icon-theme.zip" + download https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/refs/heads/master.zip -O "$HOME/install/papirus-icon-theme.zip" && \ + unzip -oq "$HOME/install/papirus-icon-theme.zip" -d "$HOME/install/papirus-icon-theme" && \ + rm -f "$HOME/install/papirus-icon-theme.zip" fi -mkdir -p "${HOME}/.local/share/icons/" -ln -sf "${HOME}/install/papirus-icon-theme/Papirus" "${HOME}/.local/share/icons/Papirus" -ln -sf "${HOME}/install/papirus-icon-theme/Papirus-Dark" "${HOME}/.local/share/icons/Papirus-Dark" -ln -sf "${HOME}/install/papirus-icon-theme/Papirus-Light" "${HOME}/.local/share/icons/Papirus-Light" +symlink "$HOME/install/papirus-icon-theme/Papirus" "$HOME/.local/share/icons/Papirus" && \ + symlink "$HOME/install/papirus-icon-theme/Papirus-Dark" "$HOME/.local/share/icons/Papirus-Dark" && \ + symlink "$HOME/install/papirus-icon-theme/Papirus-Light" "$HOME/.local/share/icons/Papirus-Light" + +[ $? = 0 ] && { + echo + success "Papirus icons installed!" + info "You can find them in $HOME/.local/share/icons/" + echo +} -echo -echo "Finish! Don't forget to change current icon theme." -echo "You can find them here:" -echo -e "\t${HOME}/.local/share/icons/" -echo diff --git a/install/pgsql b/install/pgsql index 5386919..81de742 100755 --- a/install/pgsql +++ b/install/pgsql @@ -1,16 +1,14 @@ #!/bin/bash ##makedesc: Install postgresql (latest) and php-pgsql (if php is installed) +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing postgresql (latest)..." -echo "===============================================" -echo +title -installed() { - command -v "$1" >/dev/null 2>&1 -} - -sudo apt install -y --autoremove postgresql postgresql-contrib -sudo service postgresql restart -installed 'php' && sudo apt install -y --autoremove php-pgsql +require postgresql postgresql-contrib && \ + sudo service postgresql restart && \ + { + echo + success "openvpn installed!" + postgres --version + echo + } diff --git a/install/php-psalm b/install/php-psalm index 548e374..7fee67c 100755 --- a/install/php-psalm +++ b/install/php-psalm @@ -16,11 +16,11 @@ installed() { COMPOSER_GLOBAL_HOME="$(composer config -g home)" NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { +cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo "$NEWPATH" >> "$HOME/.profile" } -source "${HOME}/.profile" +source "$HOME/.profile" composer global require vimeo/psalm --dev diff --git a/install/php-spx b/install/php-spx index 4e8351b..edf5814 100755 --- a/install/php-spx +++ b/install/php-spx @@ -16,11 +16,11 @@ installed() { ! installed 'make' && sudo apt install -y make ! installed 'wget' && sudo apt install -y wget -[ -d "${HOME}/install/php-spx" ] || mkdir -p "${HOME}/install/php-spx" +[ -d "$HOME/install/php-spx" ] || mkdir -p "$HOME/install/php-spx" wget https://github.com/NoiseByNorthwest/php-spx/archive/refs/heads/release/latest.zip -O /tmp/php-spx.zip \ - && unzip -oq /tmp/php-spx.zip -d "${HOME}/install/php-spx" \ + && unzip -oq /tmp/php-spx.zip -d "$HOME/install/php-spx" \ && rm /tmp/php-spx.zip \ - && cd "${HOME}/install/php-spx/php-spx-release-latest" \ + && cd "$HOME/install/php-spx/php-spx-release-latest" \ && phpize \ && ./configure \ && make \ diff --git a/install/phpcs b/install/phpcs index 489c8b5..163bc6a 100755 --- a/install/phpcs +++ b/install/phpcs @@ -16,11 +16,11 @@ installed() { COMPOSER_GLOBAL_HOME="$(composer config -g home)" NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { +cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo "$NEWPATH" >> "$HOME/.profile" } -source "${HOME}/.profile" +source "$HOME/.profile" composer global require squizlabs/php_codesniffer --dev composer global require friendsofphp/php-cs-fixer --dev diff --git a/install/phpmd b/install/phpmd index beffa52..c1124d8 100755 --- a/install/phpmd +++ b/install/phpmd @@ -16,11 +16,11 @@ installed() { COMPOSER_GLOBAL_HOME="$(composer config -g home)" NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { +cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo "$NEWPATH" >> "$HOME/.profile" } -source "${HOME}/.profile" +source "$HOME/.profile" composer global require phpmd/phpmd --dev diff --git a/install/phpstan b/install/phpstan index 64bf973..ba2ac3f 100755 --- a/install/phpstan +++ b/install/phpstan @@ -16,11 +16,11 @@ installed() { COMPOSER_GLOBAL_HOME="$(composer config -g home)" NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { +cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo "$NEWPATH" >> "$HOME/.profile" } -source "${HOME}/.profile" +source "$HOME/.profile" composer global require phpstan/phpstan --dev diff --git a/install/phpunit b/install/phpunit index ce3ca45..584df44 100755 --- a/install/phpunit +++ b/install/phpunit @@ -16,11 +16,11 @@ installed() { COMPOSER_GLOBAL_HOME="$(composer config -g home)" NEWPATH="export PATH=\"$COMPOSER_GLOBAL_HOME/vendor/bin:\${PATH}\"" -cat "${HOME}/.profile" | grep -qoh "$NEWPATH" || { +cat "$HOME/.profile" | grep -qoh "$NEWPATH" || { $NEWPATH - echo "$NEWPATH" >> "${HOME}/.profile" + echo "$NEWPATH" >> "$HOME/.profile" } -source "${HOME}/.profile" +source "$HOME/.profile" composer global require phpunit/phpunit --dev diff --git a/install/postman b/install/postman index 2f16a69..e77f17f 100755 --- a/install/postman +++ b/install/postman @@ -1,28 +1,31 @@ #!/bin/bash ##makedesc: Install postman (latest) +source `dirname $0`/../helpers || exit 255 -echo -echo "===============================================" -echo "Installing postman (latest)..." -echo "===============================================" -echo +# https://learning.postman.com/docs/getting-started/installation-and-updates/#installing-postman-on-linux -mkdir -p ${HOME}/install/postman -mkdir -p ${HOME}/.local/bin -wget "https://dl.pstmn.io/download/latest/linux64" -O ${HOME}/install/postman.tar.gz && \ - tar -xzf ${HOME}/install/postman.tar.gz -C ${HOME}/install/postman && \ - ln -sf ${HOME}/install/postman/Postman/Postman ${HOME}/.local/bin/postman && \ - mkdir -p "${HOME}/.local/share/applications" && \ - cat << EOF > "${HOME}/.local/share/applications/Postman.desktop" -#!/usr/bin/env xdg-open +title +mkdir -p "$HOME/install" && \ + "$HOME/.local/bin" && \ + "$HOME/.local/share/applications" + +download "https://dl.pstmn.io/download/latest/linux64" $HOME/install/postman.tar.gz && \ + unpak_targz "$HOME/install/postman.tar.gz" "$HOME/install" && \ + symlink $HOME/install/Postman/Postman $HOME/.local/bin/postman && \ + cat << EOF > "$HOME/.local/share/applications/Postman.desktop" && sudo update-desktop-database [Desktop Entry] Name=Postman -Exec=${HOME}/.local/bin/postman -Icon=${HOME}/install/postman/Postman/app/icons/icon_128x128.png -Categories=Utility,Network +Exec=$HOME/.local/bin/postman %U +Icon=$HOME/install/Postman/app/icons/icon_128x128.png +Categories=Development,Network Terminal=false Type=Application Encoding=UTF-8 EOF -sudo update-desktop-database + +[ $? = 0 ] && { + echo + success "Postman installed!" + echo +} diff --git a/install/telegram b/install/telegram index 7437d18..ea5bb35 100755 --- a/install/telegram +++ b/install/telegram @@ -7,7 +7,7 @@ echo "Installing telegram (latest)..." echo "===============================================" echo -mkdir -p "${HOME}/install" "${HOME}/.local/bin" -wget "https://telegram.org/dl/desktop/linux" -O ${HOME}/install/telegram.tar.gz && \ - tar -xJf ${HOME}/install/telegram.tar.gz -C ${HOME}/.local/bin -${HOME}/.local/bin/Telegram/Telegram & disown > /dev/null +mkdir -p "$HOME/install" "$HOME/.local/bin" +wget "https://telegram.org/dl/desktop/linux" -O $HOME/install/telegram.tar.gz && \ + tar -xJf $HOME/install/telegram.tar.gz -C $HOME/.local/bin +$HOME/.local/bin/Telegram/Telegram & disown > /dev/null diff --git a/install/youtube-dl b/install/youtube-dl index bec0b07..0d4204c 100755 --- a/install/youtube-dl +++ b/install/youtube-dl @@ -12,8 +12,8 @@ echo # 11.04.23: release 2021.12.17 in snap/apt/github is broken (Unable to extract uploader id) # and still no fix officially released, so we just build it from actual sources -# curl -L https://yt-dl.org/downloads/latest/youtube-dl -o "${HOME}/.local/bin/youtube-dl" && \ -# sudo chmod +rx "${HOME}/.local/bin/youtube-dl" +# curl -L https://yt-dl.org/downloads/latest/youtube-dl -o "$HOME/.local/bin/youtube-dl" && \ +# sudo chmod +rx "$HOME/.local/bin/youtube-dl" installed() { command -v "$1" >/dev/null 2>&1 diff --git a/install/ytdlcue b/install/ytdlcue index fcfe3a4..1cf7533 100755 --- a/install/ytdlcue +++ b/install/ytdlcue @@ -11,5 +11,5 @@ echo install_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" tools_dir="`dirname $install_dir`/tools" -cp "${tools_dir}/ytdlcue.sh" "${HOME}/.local/bin/ytdlcue" -sudo chmod +rx "${HOME}/.local/bin/ytdlcue" +cp "${tools_dir}/ytdlcue.sh" "$HOME/.local/bin/ytdlcue" +sudo chmod +rx "$HOME/.local/bin/ytdlcue" diff --git a/install/zsh b/install/zsh index 0d7dc39..2e73d2e 100755 --- a/install/zsh +++ b/install/zsh @@ -8,4 +8,4 @@ echo "===============================================" echo sudo apt install -y --autoremove zsh -echo "source ~/.profile" >> ~/.zshrc +echo "source ~/.profile" >> "$HOME/.zshrc" diff --git a/uninstall/apache2 b/uninstall/apache2 new file mode 100755 index 0000000..b6e725e --- /dev/null +++ b/uninstall/apache2 @@ -0,0 +1,13 @@ +#!/bin/bash +##makedesc: Uninstall apache2 +source `dirname $0`/../helpers || exit 255 + +title + +sudo apt remove -y --autoremove apache2 + +[ $? = 0 ] && { + echo + success "apache2 uninstalled!" + echo +} diff --git a/uninstall/grub-customizer b/uninstall/grub-customizer new file mode 100755 index 0000000..f6b0b71 --- /dev/null +++ b/uninstall/grub-customizer @@ -0,0 +1,19 @@ +#!/bin/bash +##makedesc: Uninstall grub-customizer with ppa +source `dirname $0`/../helpers || exit 255 + +title + +source_file="/etc/apt/sources.list.d/$(ls -1 /etc/apt/sources.list.d/ | grep danielrichter2007)" + +sudo apt remove -y --autoremove grub-customizer && \ + [ -f "$source_file" ] && { + sudo rm "$source_file" && \ + sudo apt update + } + +[ $? = 0 ] && { + echo + success "grub-customizer uninstalled!" + echo +} diff --git a/uninstall/lite-xl b/uninstall/lite-xl index 4e580e2..10cf21f 100755 --- a/uninstall/lite-xl +++ b/uninstall/lite-xl @@ -9,10 +9,10 @@ echo set -x rm -rf \ - "${HOME}/.local/bin/lite-xl" \ - "${HOME}/.local/share/applications/org.lite_xl.lite_xl.desktop" \ - "${HOME}/.local/share/lite-xl" \ - "${HOME}/.config/lite-xl" + "$HOME/.local/bin/lite-xl" \ + "$HOME/.local/share/applications/org.lite_xl.lite_xl.desktop" \ + "$HOME/.local/share/lite-xl" \ + "$HOME/.config/lite-xl" sudo update-desktop-database && \ xdg-desktop-menu forceupdate