Compare commits

...

5 Commits

Author SHA1 Message Date
b2e78c43d1 wip4 2026-02-16 17:28:48 +08:00
d13a8a44d1 change-amd-driver added 2026-02-16 17:26:38 +08:00
edac0e49c4 ddns scripts updated 2026-02-16 17:25:18 +08:00
642522a01d frkn removed 2026-02-16 17:24:42 +08:00
daa8df5c77 fix postman icon in desktop file 2026-02-16 17:22:49 +08:00
31 changed files with 701 additions and 310 deletions

View File

@@ -18,7 +18,7 @@ for file in ./install/*; do
name=${name%.sh} name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file}) desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>' [ -z "$desc" ] && desc='<no description>'
echo -e "##${name}: ${desc}\n${name}:\n\t@${file}\n" >> Makefile echo -e "##${name}: ${desc}\n${name}:\n\t@${file} install\n" >> Makefile
done; done;
cat << EOF >> Makefile cat << EOF >> Makefile
@@ -47,7 +47,7 @@ for file in ./upgrade/*; do
name=${name%.sh} name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file}) desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>' [ -z "$desc" ] && desc='<no description>'
echo -e "##${CHR_UPGRADE}${name}: ${desc}\n${CHR_UPGRADE}${name}:\n\t@${file}\n" >> Makefile echo -e "##${CHR_UPGRADE}${name}: ${desc}\n${CHR_UPGRADE}${name}:\n\t@${file} upgrade\n" >> Makefile
done; done;
cat << EOF >> Makefile cat << EOF >> Makefile
@@ -62,7 +62,7 @@ for file in ./uninstall/*; do
name=${name%.sh} name=${name%.sh}
desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file}) desc=$(grep -m 1 -oP "(?<=^##makedesc:\s).*$" ${file})
[ -z "$desc" ] && desc='<no description>' [ -z "$desc" ] && desc='<no description>'
echo -e "##${CHR_UNINSTALL}${name}: ${desc}\n${CHR_UNINSTALL}${name}:\n\t@${file}\n" >> Makefile echo -e "##${CHR_UNINSTALL}${name}: ${desc}\n${CHR_UNINSTALL}${name}:\n\t@${file} remove\n" >> Makefile
done; done;
cat << EOF >> Makefile cat << EOF >> Makefile

46
install/_example Normal file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Example script
set -eo pipefail
install() {
echo
echo "==============================================="
echo "Installing example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish! example v1.2.3"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish! example v1.2.3"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing example"
echo "==============================================="
echo
sleep 3
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

46
install/anytype Executable file
View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
##makedesc: Manage anytype (deb)
set -eo pipefail
installDir="$HOME/install/anytype"
install() {
release="$(curl -s 'https://api.github.com/repos/anyproto/anytype-ts/releases/latest')"
tag="$(echo "$release" | jq -r '.tag_name')"
asset="$(echo "$release" | jq -r '.assets.[] | select(.name | test("amd64.deb$"))')"
url="$(echo "$asset" | jq -r '.browser_download_url')"
echo -e "$tag $url"
echo
echo "==============================================="
echo "Installing anytype $tag"
echo "==============================================="
echo
mkdir -p "$installDir"
filepath="$installDir/anytype_${tag}_amd46.deb"
wget "$url" -O "$filepath"
sudo dpkg -i "$filepath"
echo
echo "Finish! $tag"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing anytype"
echo "==============================================="
echo
sudo apt purge -y anytype*
echo
echo "Finish!"
echo
}
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,11 +1,46 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install apache2 (latest) ##makedesc: Manage apache2 (apt)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title install() {
echo
echo "==============================================="
echo "Installing apache2"
echo "==============================================="
echo
sudo apt install -y apache2
sudo systemctl restart apache2
echo
echo "Finish! $(apache2 -v)"
echo
}
apt_install apache2 upgrade() {
sudo systemctl restart apache2 echo
echo "==============================================="
echo "Upgrading apache2"
echo "==============================================="
echo
sudo apt upgrade -y apache2 apache2-data apache2-utils
sudo systemctl restart apache2
echo
echo "Finish! $(apache2 -v)"
echo
}
success "apache2 installed!" remove() {
apache2 -v echo
echo "==============================================="
echo "Removing apache2"
echo "==============================================="
echo
sudo apt purge -y apache2*
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install software from apt ##makedesc: Install basic software from apt
sudo apt update && \ sudo apt update && \
sudo apt upgrade -y --autoremove && \ sudo apt upgrade -y --autoremove && \
@@ -34,17 +34,17 @@ sudo apt update && \
p7zip-full \ p7zip-full \
easyeffects \ easyeffects \
software-properties-common \ software-properties-common \
terminator \
ubuntu-restricted-extras \ ubuntu-restricted-extras \
unzip \ unzip \
vlc \ vlc \
ffmpeg \ ffmpeg \
xclip \
inotify-tools \ inotify-tools \
notify-osd \ notify-osd \
fonts-open-sans \ fonts-open-sans \
libnotify-bin \ libnotify-bin \
tree \ tree \
earlyoom earlyoom
# terminator
# xclip
# sqlitebrowser # sqlitebrowser
# etckeeper # etckeeper

View File

@@ -1,13 +1,52 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install Canon Pixma MG2500 + ppa ##makedesc: Canon Pixma MG2500 + ppa
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title install() {
echo
echo "==============================================="
echo "Installing Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
sudo add-apt-repository -y ppa:thierry-f/fork-michael-gruz
sudo apt install -y cnijfilter-mg2500series scangearmp-mg2500series
echo
echo "Finish!"
echo "Drivers for Canon Pixma MG2500 installed!"
echo "Now you must reboot PC and connect your printer."
echo
}
apt_ppa_add ppa:thierry-f/fork-michael-gruz upgrade() {
echo
echo "==============================================="
echo "Upgrading Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
sudo apt upgrade -y cnijfilter-mg2500series scangearmp-mg2500series
echo
echo "Finish! Canon Pixma MG2500 + ppa"
echo
}
apt_install cnijfilter-mg2500series remove() {
apt_install scangearmp-mg2500series echo
echo "==============================================="
echo "Removing Canon Pixma MG2500 + ppa"
echo "==============================================="
echo
# sudo apt purge -y cnijfilter-mg2500series scangearmp-mg2500series
sudp dpkg -r cnijfilter-mg2500series
sudp dpkg -r cnijfilter-common
sudp dpkg -r scangearmp-mg2500series
sudp dpkg -r scangearmp-common
sudo add-apt-repository -ry ppa:thierry-f/fork-michael-gruz
echo
echo "Finish!"
echo
}
success "Drivers for Canon Pixma MG2500 installed!" case "$1" in
info "Now you must reboot PC and connect your printer." u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,17 +1,56 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install google chrome (latest) ##makedesc: Google Chrome (latest)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
set -eo pipefail
# https://t.me/axenov_blog/251 # https://t.me/axenov_blog/251
title dest="$HOME/install/deb"
deb="$dest/google-chrome.deb"
url="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
mkdir -p "$HOME/install/deb" install() {
echo
echo "==============================================="
echo "Installing Google Chrome"
echo "==============================================="
echo
mkdir -p "$dest"
wget "$url" -O "$deb"
sudo dpkg -i "$deb"
echo
echo "Finish! $(google-chrome --version)"
echo
}
download "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" \ upgrade() {
"$HOME/install/deb/google-chrome.deb" echo
echo "==============================================="
echo "Upgrading Google Chrome"
echo "==============================================="
echo
mkdir -p "$dest"
wget "$url" -O "$deb"
sudo dpkg -i "$deb"
echo
echo "Finish! $(google-chrome --version)"
echo
}
dpkg_install "$HOME/install/deb/google-chrome.deb" remove() {
echo
echo "==============================================="
echo "Removing Google Chrome"
echo "==============================================="
echo
sudo dpkg -r google-chrome
echo
echo "Finish!"
echo
}
success "Google Chrome installed!" case "$1" in
google-chrome --version u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,6 +1,56 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: ClamAV (WIP) ##makedesc: ClamAV
sudo apt install clamav -y && \ set -eo pipefail
echo "DatabaseMirror packages.microsoft.com/clamav" | sudo tee -a /etc/clamav/freshclam.conf && \
install() {
echo
echo "==============================================="
echo "Installing clamav"
echo "==============================================="
echo
sudo apt install -y clamav
echo "DatabaseMirror packages.microsoft.com/clamav" \
| sudo tee -a /etc/clamav/freshclam.conf
sudo freshclam sudo freshclam
echo
echo "Finish!"
echo
}
upgrade() {
echo
echo "==============================================="
echo "Upgrading clamav"
echo "==============================================="
echo
sudo apt upgrade -y clamav
sudo freshclam
echo
echo "Finish!"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing clamav"
echo "==============================================="
echo
sudo apt purge -y clamav*
echo
echo "Finish!"
echo
}
case "$1" in
u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,39 +1,78 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install docker (latest) + ppa ##makedesc: Docker + ppa
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://docs.docker.com/engine/install/ubuntu/ # https://docs.docker.com/engine/install/ubuntu/
# https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user # https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user
title set -eo pipefail
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do doRemove() {
apt_remove $pkg sudo apt purge -y docker* podman-docker containerd runc
done }
require ca-certificates lsb-release install_() {
source /etc/os-release echo
echo "==============================================="
echo "Installing Docker"
echo "==============================================="
echo
doRemove
sudo apt install -y ca-certificates lsb-release
source /etc/os-release
codename="$VERSION_CODENAME"
key="/etc/apt/keyrings/docker.asc"
arch=$(dpkg --print-architecture)
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" -o "$key"
sudo chmod a+r $key
echo "deb [arch=$arch signed-by=$key] https://download.docker.com/linux/ubuntu $codename stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
sudo usermod -aG docker "$(whoami)"
newgrp docker
echo
echo "Finish! $(docker --version)"
echo "Probably, you need to relogin to apply 'docker' group permanently."
echo
}
key="/etc/apt/keyrings/docker.asc" upgrade() {
echo
echo "==============================================="
echo "Upgrading Docker"
echo "==============================================="
echo
sudo apt upgrade -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
echo
echo "Finish!"
echo
}
sudo install -m 0755 -d /etc/apt/keyrings remove() {
sudo cdownload https://download.docker.com/linux/ubuntu/gpg $key echo
sudo chmod a+r $key echo "==============================================="
echo "Removing Docker"
echo "==============================================="
echo
doRemove
echo
echo "Finish!"
echo
}
echo "deb [arch=$(dpkg_arch) signed-by=$key] https://download.docker.com/linux/ubuntu $VERSION_CODENAME stable" \ case "$1" in
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null u|upgrade|update) upgrade ;;
r|remove|d|delete|p|purge) remove ;;
apt_update *) install ;;
apt_install \ esac
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
sudo usermod -aG docker $(whoami)
newgrp docker
success "Docker installed!"
docker --version
info "Probably, you need to relogin to apply 'docker' group permanently."

View File

@@ -1,53 +0,0 @@
#!/usr/bin/env bash
##makedesc: Install Wireguard + FRKN (deprecated)
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://frkn.org/ru/installation
title
mkdir -p "$HOME/install/frkn"
cd "$HOME/install/frkn"
apt_install wireguard jq
countries=(jp nl tr at ru se)
for idx in ${!countries[@]}; do
country=${countries[idx]}
info "Downloading config for $country ($(expr $idx + 1)/${#countries[@]})"
json=$(curl -s "https://api.frkn.org/peer?location=$country" | jq)
iface_address=$(echo $json | jq -r .iface.address)
iface_privkey=$(echo $json | jq -r .iface.key)
iface_dns=$(echo $json | jq -r .iface.dns)
peer_pubkey=$(echo $json | jq -r .peer.pubkey)
peer_psk=$(echo $json | jq -r .peer.psk)
peer_allowed_ips=$(echo $json | jq -r .peer.allowed_ips)
peer_endpoint=$(echo $json | jq -r .peer.endpoint)
cat << EOF > "frkn-$country.conf"
[Interface]
Address = $iface_address
DNS = $iface_dns
PrivateKey = $iface_privkey
[Peer]
PublicKey = $peer_pubkey
PresharedKey = $peer_psk
AllowedIPs = $peer_allowed_ips
Endpoint = $peer_endpoint
PersistentKeepalive = 25
EOF
done
sudo cp frkn-*.conf /etc/wireguard/
[ $? = 0 ] && {
echo
success "Wireguard + FRKN installed!"
wg --version
info "Use 'wg-quick (up|down) frkn-($(implode '|' ${countries[@]}))' to control connections"
info "Use 'sudo wg show' to see connection status"
}

View File

@@ -1,28 +1,57 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install golang v1.21.0 ##makedesc: Install golang
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
# https://go.dev/dl/ # https://go.dev/dl/
# https://golang.org/doc/install # https://golang.org/doc/install
# https://www.vultr.com/docs/install-the-latest-version-of-golang-on-ubuntu # https://github.com/udhos/update-golang/blob/master/update-golang.sh
[ $1 ] && VERSION="$1" || VERSION="1.23.0" set -eo pipefail
title "Installing golang v$VERSION..."
FILE="go$VERSION.linux-amd64.tar.gz" doRemove() {
sudo rm -rf /usr/local/go && \ [ -d "/usr/local/go" ] && sudo rm -rf "/usr/local/go"
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="/usr/local/go/bin:$PATH"' >> "$HOME/.profile" && \
echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile" && \
source ~/.profile
[ $? = 0 ] && { install() {
dlUrl="https://go.dev/dl"
json=$(curl -sSL "$dlUrl/?mode=json")
version=$(echo "$json" | jq -r '.[0].version')
echo
echo "==============================================="
echo "Installing golang v$version"
echo "==============================================="
echo
latestJson=$(echo "$json" | jq -r '.[0].files.[] | select (.kind == "archive" and .os == "linux" and .arch == "amd64")')
fileName=$(echo "$latestJson" | jq -r '.filename')
fileUrl="$dlUrl/$fileName"
downloadPath="$HOME/install"
archivePath="$downloadPath/$fileName"
doRemove
[ -f "$archivePath" ] || wget "$fileUrl" -O "$archivePath"
[ -f "$archivePath" ] && sudo tar -xzf "$archivePath" -C /usr/local
sudo chown "$USER": -R /usr/local/go
echo 'export PATH="/usr/local/go/bin:$PATH"' >> "$HOME/.profile"
echo "export GOPATH=\"\$HOME/.go\"" >> "$HOME/.profile"
echo echo
success "golang installed!"
info "NOTE: now run 'source ~/.profile' to apply new env vars"
go version go version
go install github.com/go-delve/delve/cmd/dlv@latest
go install
echo "Finish!"
}
remove() {
echo
echo "==============================================="
echo "Removing golang"
echo "==============================================="
echo
doRemove
echo
echo "Finish!"
echo echo
} }
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,20 +0,0 @@
#!/usr/bin/env bash
##makedesc: Install JetBrains Mono fonts
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || 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/"
[ $? = 0 ] && {
echo
success "JetBrains Mono fonts installed!"
echo
}

66
install/nerd-fonts Executable file
View File

@@ -0,0 +1,66 @@
#!/usr/bin/env bash
##makedesc: Install nerd-fonts
set -eo pipefail
#TODO nokia-sans
downloadPath="$HOME/install/nerd-fonts"
installPath="$HOME/.local/share/fonts/"
url="https://github.com/ryanoasis/nerd-fonts/releases/latest/download"
fonts=(
FiraCode
FiraMono
JetBrainsMono
Meslo
Noto
RobotoMono
Ubuntu
UbuntuMono
UbuntuSans
)
install() {
echo
echo "==============================================="
echo "Installing nerd-fonts"
echo "==============================================="
echo
[[ -d "$downloadPath" ]] || mkdir -p "$downloadPath"
for fontname in "${fonts[@]}"; do
fontdir="$installPath/Nerd-$fontname"
wget "$url/$fontname.tar.xz" -O "$downloadPath/$fontname.tar.xz"
[[ -d "$installPath/$fontname" ]] || mkdir -p "$fontdir"
tar -xJf "$downloadPath/$fontname.tar.xz" -C "$fontdir"
done
fc-cache -vf "$installPath"
echo
echo "Finish!"
echo
}
remove() {
echo
echo "==============================================="
echo "Removing nerd-fonts"
echo "==============================================="
echo
find "$installPath" -type d -name "Nerd-*" -exec rm -rf {} +
fc-cache -vf "$installPath"
echo
echo "Finish!"
echo
}
case "$1" in
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac

View File

@@ -1,33 +1,80 @@
#!/usr/bin/env bash #!/usr/bin/env bash
##makedesc: Install nvim + lazyvim ##makedesc: Install nvim + lazyvim
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255 set -eo pipefail
# https://www.lazyvim.org/installation # https://www.lazyvim.org/installation
# https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/ # https://www.devas.life/effective-neovim-setup-for-web-development-towards-2024/
title # TODO https://github.com/rockerBOO/awesome-neovim
# TODO https://docs.astronvim.com
require git url="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz"
downloadPath="$HOME/install"
downloadTarGz="$downloadPath/nvim.tar.gz"
installPath="/opt/nvim"
cfgPath="$HOME/.config/nvim"
nvimDataPaths=(
"$cfgPath"
"$HOME"/.local/share/nvim
"$HOME"/.local/state/nvim
"$HOME"/.cache/nvim
)
nvimUrl="https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz" backup() {
installPath="$HOME/install" echo "Backup configuration files..."
installTar="$installPath/nvim.tar.gz" t=$(date +'%s')
for path in "${nvimDataPaths[@]}"; do
[[ -d "$path" ]] && cp -v "$path" "$path-$t.bak"
done
echo "Done"
}
[ -d "$HOME/.config/nvim" ] && mv "$HOME"/.config/nvim{,.bak} install() {
[ -d "$HOME/.local/share/nvim" ] && mv "$HOME"/.local/share/nvim{,.bak} echo
[ -d "$HOME/.local/state/nvim" ] && mv "$HOME"/.local/state/nvim{,.bak} echo "==============================================="
[ -d "$HOME/.cache/nvim" ] && mv "$HOME"/.cache/nvim{,.bak} echo "Installing neovim"
echo "==============================================="
echo
download "$nvimUrl" "$installTar" backup
unpack_targz "$installTar" "$installPath" wget "$url" -O "$downloadTarGz"
tar -xzf "$downloadTarGz" -C "$downloadPath"
sudo rm -vrf /opt/nvim sudo rm -rf "$installPath"
sudo mv -v "$installPath/nvim-linux-x86_64" /opt/nvim sudo mv "$downloadPath/nvim-linux-x86_64" "$installPath"
git.clone_quick https://github.com/LazyVim/starter "$HOME/.config/nvim" git clone --depth=1 --single-branch https://github.com/LazyVim/starter "$cfgPath"
rm -rf "$HOME/.config/nvim/.git" rm -rf "$cfgPath/.git"
sudo update-desktop-database && \ sudo update-desktop-database
xdg-desktop-menu forceupdate xdg-desktop-menu forceupdate
echo
echo "Finish!"
nvim -v
echo
}
remove() {
echo
echo "==============================================="
echo "Removing nerd-fonts"
echo "==============================================="
echo
find "$downloadPath" -type d -name "Nerd-*" -exec rm -rf {} +
fc-cache -vf "$downloadPath"
echo
echo "Finish!"
echo
}
case "$1" in
b|backup) backup ;;
r|remove|d|delete|p|purge) remove ;;
*) install ;;
esac
# export PATH="$PATH:/opt/nvim-linux-x86_64/bin" # export PATH="$PATH:/opt/nvim-linux-x86_64/bin"

View File

@@ -19,7 +19,7 @@ download "https://dl.pstmn.io/download/latest/linux64" "$HOME/install/postman.ta
[Desktop Entry] [Desktop Entry]
Name=Postman Name=Postman
Exec=$HOME/.local/bin/postman %U Exec=$HOME/.local/bin/postman %U
Icon=$HOME/install/Postman/app/icons/icon_128x128.png Icon=$HOME/install/Postman/app/resources/app/assets/icon.png
Categories=Development,Network Categories=Development,Network
Terminal=false Terminal=false
Type=Application Type=Application

33
install/tilt Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
mkdir -p ~/install/tilt ~/.local/bin
cd ~/install/tilt
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$KUBECTL_VERSION/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
chmod +x kubectl
cp ./kubectl ~/.local/bin/kubectl
################################################################################
CTLPTL_URL=$(curl -s "https://api.github.com/repos/tilt-dev/ctlptl/releases/latest" \
| jq -r '.assets.[] | select(.name | test("linux.x86_64.tar.gz")).browser_download_url')
curl -fsSL "$CTLPTL_URL" | tar -xz -C ~/.local/bin ctlptl
# chmod +x ~/.local/bin/ctlptl
################################################################################
TILT_URL=$(curl -s "https://api.github.com/repos/tilt-dev/tilt/releases/latest" \
| jq -r '.assets.[] | select(.name | test("linux.x86_64.tar.gz")).browser_download_url')
curl -fsSL "$TILT_URL" | tar -xz -C ~/.local/bin tilt
# chmod +x ~/.local/bin/tilt
cd -
echo "Version of ctlptl = $(ctlptl version)"
echo "Version of tilt = $(tilt version)"
echo "Version of kubectl:"
kubectl version

1
scripts/ddns/afraid/.env Executable file
View File

@@ -0,0 +1 @@
AFRAID_TOKEN=6qfkK3VmHf7t4PwvTUJtxNEQ

25
scripts/ddns/afraid/update.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
# shellcheck disable=SC1091
thisdir="$( dirname "$(readlink -e -- "${BASH_SOURCE[0]}")")"
log() {
timestamp="$(date +'%Y-%m-%d %H:%M:%S')"
datestamp="$(date +'%Y-%m-%d')"
[ ! -d "$thisdir/log" ] && mkdir "$thisdir/log"
echo "[$timestamp] $*" >> "$thisdir/log/$datestamp.log"
}
[ ! -f "$thisdir/.env" ] && {
log "ERROR: .env not exists"
exit 1
}
source "$thisdir/.env"
[ -z "$AFRAID_TOKEN" ] && {
log "ERROR: env var AFRAID_TOKEN not specified"
exit 1
}
result=$(curl -s "http://sync.afraid.org/u/${AFRAID_TOKEN}/")
log "$result"

View File

@@ -1,115 +0,0 @@
#!/usr/bin/env bash
function disconnect() {
echo "Disconnecting: $1"
sudo wg-quick down "$1"
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
echo
}
function connect() {
echo "Connecting: frkn-$1"
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=0
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
sudo wg-quick up "frkn-$1"
echo
}
function in_array() {
local find=$1
shift
for e in "$@"; do
[[ "$e" == "$find" ]] && return 0
done
return 1
}
function update_wg() {
sudo apt install -y wireguard jq && wg --version
}
function update_frkn() {
local countries=(uk ru nl nl2 ch)
for idx in ${!countries[@]}; do
country=${countries[idx]}
echo "Downloading config for $country ($(expr $idx + 1)/${#countries[@]})"
json=$(curl -s "https://api.frkn.org/peer?location=$country" | jq)
iface_address=$(echo $json | jq -r .iface.address)
iface_privkey=$(echo $json | jq -r .iface.key)
iface_dns=$(echo $json | jq -r .iface.dns)
peer_pubkey=$(echo $json | jq -r .peer.pubkey)
peer_psk=$(echo $json | jq -r .peer.psk)
peer_allowed_ips=$(echo $json | jq -r .peer.allowed_ips)
peer_endpoint=$(echo $json | jq -r .peer.endpoint)
cat << EOF > "./frkn-$country.conf"
[Interface]
Address = $iface_address
DNS = $iface_dns
PrivateKey = $iface_privkey
[Peer]
PublicKey = $peer_pubkey
PresharedKey = $peer_psk
AllowedIPs = $peer_allowed_ips
Endpoint = $peer_endpoint
PersistentKeepalive = 25
EOF
done
sudo mv -f ./frkn-*.conf /etc/wireguard/
}
command="$1"
countries=()
current=$(sudo wg show | head -n 1 | awk '{print $2}')
for file in /etc/wireguard/*.conf; do
filename=${file/\/etc\/wireguard\/frkn-}
code=${filename/.conf/}
countries+=($code)
done
correct=-1
if [ -z "$command" ] ; then
while [ $correct -lt 0 ]; do
read -rp "Entry on of country code (${countries[*]}): " command
if in_array "$command" ${countries[@]}; then
correct=1
else
echo "Неверный код страны!"
fi
done
fi
case "$command" in
"update" )
if update_wg && update_frkn; then
echo "Wireguard and FRKN updated"
else
echo "Something went wrong"
exit 1
fi
;;
"down" )
if [ -n "$current" ]; then
disconnect "$current"
fi
;;
"show" )
sudo wg show
;;
* )
if [ -n "$current" ]; then
disconnect "$current"
fi
connect "$command"
;;
esac

View File

@@ -0,0 +1,55 @@
#!/bin/bash
set -e
################################################################################
# НАЗНАЧЕНИЕ: Переключение драйвера для видеокарт AMD GCN 1.0 (Pitcairn/SI).
#
# ЧТО ИСПРАВЛЯЕТ:
# Артефакты, мерцание, черные окна и "шахматную сетку" в Electron-приложениях
# (VS Code, Discord, Obsidian, Skype) и браузере Chrome/Chromium в среде KDE.
#
# ПОЧЕМУ ЭТО НУЖНО:
# По умолчанию для старых карт (R7 370 / R9 270X) Ubuntu использует драйвер 'radeon'.
# Он стабилен, но плохо поддерживает современное аппаратное ускорение и Vulkan.
# Переключение на драйвер 'amdgpu' дает:
# 1. Полную поддержку Vulkan API.
# 2. Совместимость с современным аппаратным ускорением Chromium.
# 3. Повышенную производительность в KDE Plasma (движок KWin).
#
# ПРИНЦИП РАБОТЫ:
# Скрипт передает ядру параметры 'radeon.si_support=0' (отключить старый драйвер
# для архитектуры Southern Islands) и 'amdgpu.si_support=1' (включить новый).
################################################################################
# Проверка на права суперпользователя
if [ "$EUID" -ne 0 ]; then
echo "Пожалуйста, запустите скрипт через sudo"
exit
fi
echo "--- Настройка AMDGPU для GCN 1.0 (Pitcairn) ---"
# 1. Резервное копирование конфига Grub
cp /etc/default/grub /etc/default/grub.bak
echo "[1/4] Бэкап Grub создан: /etc/default/grub.bak"
# 2. Добавление параметров поддержки amdgpu и отключение старого radeon
# Используем sed для вставки параметров в строку GRUB_CMDLINE_LINUX_DEFAULT
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/GRUB_CMDLINE_LINUX_DEFAULT="radeon.si_support=0 amdgpu.si_support=1 /' /etc/default/grub
echo "[2/4] Параметры ядра добавлены в /etc/default/grub"
# 3. Обновление конфигурации Grub
echo "[3/4] Обновление загрузчика..."
update-grub
# 4. Проверка необходимости внесения в blacklist (опционально, но надежно)
if [ ! -f /etc/modprobe.d/amdgpu.conf ]; then
echo "options amdgpu si_support=1" > /etc/modprobe.d/amdgpu.conf
echo "options radeon si_support=0" >> /etc/modprobe.d/amdgpu.conf
echo "[4/4] Конфиг modprobe создан"
else
echo "[4/4] Конфиг modprobe уже существует"
fi
echo "-------------------------------------------------------"
echo "Готово! Перезагрузите компьютер, чтобы изменения вступили в силу."
echo "После перезагрузки выполните: lspci -k | grep -EA3 'VGA|3D'"

View File

@@ -0,0 +1,54 @@
#!/bin/bash
set -e
################################################################################
# НАЗНАЧЕНИЕ: Откат изменений и возврат к стандартному драйверу 'radeon'.
#
# ЗАЧЕМ ЭТО НУЖНО:
# Этот скрипт используется, если после перехода на 'amdgpu' возникли проблемы:
# 1. Система загружается в черный экран или зависает.
# 2. Появились проблемы с выводом звука через HDMI (иногда бывает на GCN 1.0).
# 3. Наблюдаются специфические графические баги, которых не было ранее.
#
# ЧТО ИСПРАВЛЯЕТ:
# Возвращает конфигурацию системы к стандартному состоянию Ubuntu. Драйвер
# 'radeon' является базовым и максимально стабильным для старых карт AMD,
# хотя и не поддерживает современные функции (Vulkan, новый стек Electron).
#
# ПРИНЦИП РАБОТЫ:
# 1. Восстанавливает исходный файл /etc/default/grub из резервной копии.
# 2. Удаляет специфические инструкции из /etc/modprobe.d/, которые заставляли
# ядро игнорировать карту для драйвера radeon.
# 3. Обновляет конфигурацию загрузчика для применения изменений.
################################################################################
# Проверка на права суперпользователя
if [ "$EUID" -ne 0 ]; then
echo "Пожалуйста, запустите скрипт через sudo"
exit
fi
echo "--- Откат изменений и возврат к драйверу Radeon ---"
# 1. Восстановление Grub из бэкапа или очистка вручную
if [ -f /etc/default/grub.bak ]; then
mv /etc/default/grub.bak /etc/default/grub
echo "[1/3] Конфигурация Grub восстановлена из бэкапа."
else
# Если бэкапа нет, удаляем параметры через sed
sed -i 's/radeon.si_support=0 //g' /etc/default/grub
sed -i 's/amdgpu.si_support=1 //g' /etc/default/grub
echo "[1/3] Параметры удалены из /etc/default/grub вручную."
fi
# 2. Удаление файлов из modprobe.d
if [ -f /etc/modprobe.d/amdgpu.conf ]; then
rm /etc/modprobe.d/amdgpu.conf
echo "[2/3] Файл /etc/modprobe.d/amdgpu.conf удален."
fi
# 3. Обновление конфигурации Grub
echo "[3/3] Обновление загрузчика..."
update-grub
echo "-------------------------------------------------------"
echo "Откат завершен. После перезагрузки система вернется на драйвер 'radeon'."

0
scripts/ubuntu/lemp.sh Normal file → Executable file
View File

0
scripts/ubuntu/mediasrv.sh Normal file → Executable file
View File

0
scripts/ubuntu/server.sh Normal file → Executable file
View File

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bash
##makedesc: Uninstall apache2
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
apt_remove apache2
success "apache2 removed!"

View File

@@ -1,15 +0,0 @@
#!/usr/bin/env bash
##makedesc: Uninstall Canon Pixma MG2500 + ppa
source "$( dirname $(readlink -e -- "${BASH_SOURCE}"))/../helpers.sh" || exit 255
title
apt_ppa_remove ppa:thierry-f/fork-michael-gruz
dpkg_remove cnijfilter-mg2500series
dpkg_remove cnijfilter-common
dpkg_remove scangearmp-mg2500series
dpkg_remove scangearmp-common
success "Drivers for Canon Pixma MG2500 removed!"