Compare commits
No commits in common. "master" and "main" have entirely different histories.
|
@ -0,0 +1 @@
|
|||
alias xc="xclip -selection clipboard" # копировать stdout
|
|
@ -0,0 +1 @@
|
|||
apt-cache search '' | sort | cut --delimiter ' ' --fields 1 | fzf --multi --cycle --reverse --preview 'apt-cache show {1}' | xargs -r sudo apt install -y
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
trap "echo 'sending fail backup status to vmagent...' && curl -k -d 'etcd_backup,hostname=ml-cbt-01 status=0.0' -X POST https://vmagent.at-kube.mosmetro.ru/write" ERR # отсылаем алёрт в VictoriaMetrics, если одна из команд была неуспешной
|
||||
trap "echo 'sending fail backup status to vmagent...' && curl -k -d 'etcd_backup,hostname=ml-cbt-01 status=0.0' -X POST https://<vmagent-url>/write" ERR # отсылаем алёрт в VictoriaMetrics, если одна из команд была неуспешной
|
||||
cd /share/kubernetes/backups/etcd/ # переходим в папку с бэкапами
|
||||
timestamp=$(date +"%Y-%m-%d-%H-%M-%S")
|
||||
ETCDCTL_API=3 /usr/bin/etcdctl --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key --endpoints=https://127.0.0.1:2379 snapshot save $timestamp.db # бэкапим etcd
|
||||
ETCDCTL_API=3 etcdctl --write-out=table snapshot status $timestamp.db # проверяем, что с бэкапом всё ок
|
||||
rm `ls -t | awk 'NR>7'` # оставляем только 7 последних бэкапов, остальные удаляем
|
||||
echo 'sending success backup status to vmagent...' && curl -k -d 'etcd_backup,hostname=ml-cbt-01 status=1' -X POST https://vmagent.at-kube.mosmetro.ru/write # отправляем информацию об успешном бэкапе
|
||||
echo 'sending success backup status to vmagent...' && curl -k -d 'etcd_backup,hostname=ml-cbt-01 status=1' -X POST https://<vmagent-url>/write # отправляем информацию об успешном бэкапе. В результате получится метрика etcd_backup_status со значением 1
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
import time
|
||||
import curses
|
||||
|
||||
|
||||
|
||||
def draw(canvas):
|
||||
canvas.keypad(True) # нужно для работы с клавишами F1-F4
|
||||
while True:
|
||||
key = canvas.getkey()
|
||||
if key == ("\x1b"):
|
||||
print(f"Вы ввели Escape!")
|
||||
print(f"Вы ввели {key.encode()}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
curses.update_lines_cols()
|
||||
curses.wrapper(draw)
|
|
@ -5,7 +5,7 @@
|
|||
git remote rm submodule_origin
|
||||
git rm $1
|
||||
git commit -m "Remove $4 submodule"
|
||||
git remote add submodule_origin ssh://git@workbench.mosmetro.ru:2286/autonomous-tram/$4.git
|
||||
git remote add submodule_origin ssh://<repo-url>/$4.git
|
||||
git fetch submodule_origin
|
||||
git lfs fetch submodule_origin --all
|
||||
git branch merge-branch-$2 submodule_origin/$3
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
#!/usr/bin/env python3
|
||||
import sys, os, subprocess
|
||||
|
||||
help_text = f"""
|
||||
Usage: {os.path.basename(__file__)} $1 $2 $3
|
||||
|
||||
required:
|
||||
$1 - name of service
|
||||
$2 - absolute path to script
|
||||
|
||||
optional:
|
||||
$3 - description of service
|
||||
"""
|
||||
number_of_required_arguments = 2
|
||||
number_of_optional_arguments = 1
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
print(help_text)
|
||||
sys.exit()
|
||||
elif sys.argv[1] in ["help", "-h"]:
|
||||
print(help_text)
|
||||
sys.exit()
|
||||
elif len(sys.argv) - 1 < number_of_required_arguments:
|
||||
print(f"You provided not enough arguments")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
elif len(sys.argv) > number_of_required_arguments + number_of_optional_arguments + 1:
|
||||
print(f"You provided extra arguments")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
|
||||
name_of_service = sys.argv[1]
|
||||
path_to_script = sys.argv[2]
|
||||
description = sys.argv[3] if sys.argv[3:4] else "" # empty if no description
|
||||
|
||||
if not os.path.isabs(path_to_script):
|
||||
print("Path to script should be absolute!")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
elif not os.path.isfile(path_to_script):
|
||||
print("Path to script should exist and must be file!")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
service_file = f"""
|
||||
[Unit]
|
||||
Description={description}
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart={path_to_script}
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
"""
|
||||
|
||||
try:
|
||||
with open(f"/lib/systemd/system/{name_of_service}.service", "w") as f:
|
||||
f.write(service_file)
|
||||
subprocess.run(f"chmod +x {path_to_script}", shell=True, check=True)
|
||||
os.system(f"systemctl enable --now {name_of_service} && echo Success!!!")
|
||||
except:
|
||||
print("Something went wrong...")
|
||||
sys.exit(1)
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
# $1 - name of service
|
||||
# $2 - description of service
|
||||
# $3 path to script
|
||||
cat << EOF >> /lib/systemd/system/$1.service
|
||||
[Unit]
|
||||
Description=$2
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
ExecStart=$3
|
||||
Type=Oneshot
|
||||
StandardOutput=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
systemctl enable --now $1
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env python3
|
||||
import sys, os, subprocess
|
||||
|
||||
help_text = f"""
|
||||
Usage: {os.path.basename(__file__)} $1 $2
|
||||
|
||||
required:
|
||||
$1 - name of service
|
||||
$2 - calendar ()
|
||||
"""
|
||||
|
||||
number_of_required_arguments = 2
|
||||
number_of_optional_arguments = 0
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
print(help_text)
|
||||
sys.exit()
|
||||
elif sys.argv[1] in ["help", "-h"]:
|
||||
print(help_text)
|
||||
elif len(sys.argv) - 1 < number_of_required_arguments:
|
||||
print(f"You provided not enough arguments")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
elif len(sys.argv) > number_of_required_arguments + number_of_optional_arguments + 1:
|
||||
print(f"You provided extra arguments")
|
||||
print(help_text)
|
||||
sys.exit(1)
|
||||
|
||||
name_of_service = sys.argv[1]
|
||||
calendar = sys.argv[2]
|
||||
|
||||
timer_file = f"""
|
||||
[Unit]
|
||||
Description={name_of_service} timer
|
||||
|
||||
[Timer]
|
||||
Unit={name_of_service}.service
|
||||
OnCalendar={calendar}
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
"""
|
||||
|
||||
try:
|
||||
with open(f"/lib/systemd/system/{name_of_service}.timer", "w") as f:
|
||||
f.write(timer_file)
|
||||
os.system(f"systemctl enable --now {name_of_service}.timer && echo Success!!!")
|
||||
except:
|
||||
print("Something went wrong...")
|
||||
sys.exit(1)
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
#!/bin/bash
|
||||
# install packages I need
|
||||
sudo apt update
|
||||
sudo apt install -y \
|
||||
xserver-xorg `# for graphics` \
|
||||
xinit `# for graphics` \
|
||||
i3 `# for graphics` \
|
||||
x11-xserver-utils `# for graphics` \
|
||||
linux-headers-amd64 `# needed for nvidia-driver installation` \
|
||||
brightnessctl `# for keyboard backlight` \
|
||||
xcompmgr `# for st opacity` \
|
||||
x11-apps `# for st opacity` \
|
||||
stterm `# st` \
|
||||
mate-backgrounds `# for background` \
|
||||
xwallpaper `# for background` \
|
||||
pulseaudio `# for sound` \
|
||||
pavucontrol `# for audio control` \
|
||||
pasystray `# for audio control` \
|
||||
iputils-ping `# ping etc.` \
|
||||
neovim `# console editor` \
|
||||
psmisc `# pstree etc.` \
|
||||
software-properties-common `# manage repos (needed for nvidia-driver installation)` \
|
||||
chromium \
|
||||
conky \
|
||||
telegram-desktop \
|
||||
python3 \
|
||||
python3-venv \
|
||||
network-manager \
|
||||
network-manager-gnome \
|
||||
curl
|
||||
|
||||
sudo update-alternatives --set x-terminal-emulator /usr/bin/st
|
||||
|
||||
# start window manager
|
||||
cat > ~/.xinitrc << EOL
|
||||
dbus-update-activation-environment --systemd DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY & # because of slow Telegram start
|
||||
xcompmgr -cC & # for st opacity
|
||||
image=\$(find /usr/share/backgrounds/mate/nature/ -type f | sort --random-sort | head -1)
|
||||
xwallpaper --stretch \$image
|
||||
conky &
|
||||
i3
|
||||
EOL
|
||||
|
||||
# st opacity
|
||||
if ! grep transset ~/.bashrc &> /dev/null; then
|
||||
cat >> ~/.bashrc << EOL
|
||||
term=\$(cat /proc/\$PPID/comm)
|
||||
if [[ \$term == "x-terminal-emul" || \$term == "st" ]]; then
|
||||
transset 0.6 --id \$WINDOWID > /dev/null
|
||||
fi
|
||||
EOL
|
||||
fi
|
||||
|
||||
sudo add-apt-repository contrib non-free-firmware non-free -y
|
||||
sudo apt update
|
||||
sudo apt install nvidia-driver linux-image-amd64 -y
|
||||
|
||||
|
||||
for tool in create_systemd_service.py create_systemd_timer.py set_brightness.sh
|
||||
do
|
||||
if ! command -v $tool &> /dev/null
|
||||
then
|
||||
sudo cp $tool /usr/local/bin
|
||||
fi
|
||||
done
|
||||
|
||||
git config --global user.name "Digital Studium"
|
||||
git config --global user.email "digitalstudium001@gmail.com"
|
||||
|
||||
sudo timedatectl set-timezone Europe/Moscow
|
||||
|
||||
sudo sed -i s/desktop/override/g /etc/conky/conky.conf
|
||||
sudo sed -i s/top_left/top_right/g /etc/conky/conky.conf
|
||||
sudo bash -c "echo 'PATH=\$PATH:\$(find /opt/ -executable -type f | grep -v \.so | xargs dirname | uniq | paste -s -d : | xargs -I _ echo _)' > /etc/profile.d/opt.sh"
|
||||
|
||||
mkdir ~/.config/autostart
|
||||
dex -c /usr/bin/chromium -t ~/.config/autostart
|
||||
dex -c /usr/bin/telegram-desktop -t ~/.config/autostart
|
||||
dex -c /usr/bin/st -t ~/.config/autostart
|
||||
|
||||
if ! grep TelegramDesktop ~/.config/i3/config &> /dev/null; then
|
||||
cat >> ~/.config/i3/config << EOL
|
||||
assign [class="Chromium"] 1
|
||||
assign [class="TelegramDesktop"] 2
|
||||
assign [class="st-256color"] 3
|
||||
EOL
|
||||
fi
|
|
@ -0,0 +1,74 @@
|
|||
#!/bin/bash
|
||||
|
||||
# for nodejs/opencommit
|
||||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||||
|
||||
# apt packages
|
||||
sudo apt update
|
||||
sudo apt install -y \
|
||||
mpv `# for video playing` \
|
||||
sxiv `# for pictures` \
|
||||
strace `# for tracing` \
|
||||
docker.io `# containers` \
|
||||
docker-compose `# containers` \
|
||||
ffmpeg `# for video` \
|
||||
v4l2loopback-dkms `# for obs-studio` \
|
||||
obs-studio `# for screen recording` \
|
||||
peek `# for screen recording` \
|
||||
nodejs `# for opencommit` \
|
||||
python3-pip `# pip` \
|
||||
bat \
|
||||
locales \
|
||||
scrot `# screenshots`
|
||||
|
||||
|
||||
sudo docker swarm init
|
||||
sudo docker stack deploy -c ollama-stack.yaml ollama
|
||||
|
||||
# this is needed for pavucontrol/docker working not under sudo only
|
||||
for group in audio pulse-access pulse docker
|
||||
do
|
||||
sudo usermod -a -G $group $USER
|
||||
done
|
||||
|
||||
|
||||
# background removal for obs-studio
|
||||
if [ ! -d /usr/share/obs/obs-plugins/obs-backgroundremoval ]
|
||||
then
|
||||
wget https://github.com/occ-ai/obs-backgroundremoval/releases/download/1.1.10/obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
sudo apt install -y ./obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
rm -f obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
fi
|
||||
|
||||
|
||||
# install opencommit
|
||||
if ! command -v opencommit &> /dev/null
|
||||
then
|
||||
sudo npm install -g opencommit
|
||||
oco config set OCO_AI_PROVIDER=ollama
|
||||
fi
|
||||
|
||||
# install pet
|
||||
if ! command -v pet &> /dev/null
|
||||
then
|
||||
wget https://github.com/knqyf263/pet/releases/download/v0.3.6/pet_0.3.6_linux_amd64.deb
|
||||
sudo apt install -y ./pet_0.3.6_linux_amd64.deb
|
||||
rm -f pet_0.3.6_linux_amd64.deb
|
||||
fi
|
||||
|
||||
# install tui scripts
|
||||
if ! command -v a &> /dev/null
|
||||
then
|
||||
curl -O "https://git.digitalstudium.com/digitalstudium/tui-scripts/releases/download/latest/tui-scripts_$(curl -s https://git.digitalstudium.com/digitalstudium/tui-scripts/raw/branch/main/VERSION)-1.deb"
|
||||
sudo apt install -y ./tui-scripts_*.deb
|
||||
rm -f tui-scripts*
|
||||
fi
|
||||
|
||||
# install sshtui
|
||||
if ! command -v sshtui &> /dev/null
|
||||
then
|
||||
curl -O "https://git.digitalstudium.com/digitalstudium/sshtui/raw/branch/main/sshtui"
|
||||
sudo install ./sshtui /usr/local/bin/
|
||||
rm -f ./sshtui
|
||||
fi
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
|
||||
declare -a fonts=(
|
||||
BitstreamVeraSansMono
|
||||
CodeNewRoman
|
||||
DroidSansMono
|
||||
FiraCode
|
||||
FiraMono
|
||||
Go-Mono
|
||||
Hack
|
||||
Hermit
|
||||
JetBrainsMono
|
||||
Meslo
|
||||
Noto
|
||||
Overpass
|
||||
ProggyClean
|
||||
RobotoMono
|
||||
SourceCodePro
|
||||
SpaceMono
|
||||
Ubuntu
|
||||
UbuntuMono
|
||||
)
|
||||
|
||||
version='3.1.1'
|
||||
fonts_dir="${HOME}/.local/share/fonts"
|
||||
|
||||
if [[ ! -d "$fonts_dir" ]]; then
|
||||
mkdir -p "$fonts_dir"
|
||||
fi
|
||||
|
||||
for font in "${fonts[@]}"; do
|
||||
zip_file="${font}.zip"
|
||||
download_url="https://github.com/ryanoasis/nerd-fonts/releases/download/v${version}/${zip_file}"
|
||||
echo "Downloading $download_url"
|
||||
wget "$download_url"
|
||||
unzip "$zip_file" -d "$fonts_dir"
|
||||
rm "$zip_file"
|
||||
done
|
||||
|
||||
find "$fonts_dir" -name '*Windows Compatible*' -delete
|
||||
|
||||
fc-cache -fv
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
#!/bin/bash
|
||||
# ubuntu hangs if network interface is not optional
|
||||
if ! sudo grep -r optional /etc/netplan
|
||||
then
|
||||
sudo sed -i '/dhcp4/a\ optional: yes' /etc/netplan/00-installer-config-wifi.yaml
|
||||
sudo sed -i '/dhcp4/a\ optional: yes' /etc/netplan/00-installer-config.yaml
|
||||
fi
|
||||
# Add firefox repo
|
||||
sudo bash -c 'echo "deb [trusted=yes] https://packages.mozilla.org/apt mozilla main" > /etc/apt/sources.list.d/mozilla.list'
|
||||
# By default ubuntu installs firefox from snap, so I want to disable it
|
||||
echo '
|
||||
Package: *
|
||||
Pin: origin packages.mozilla.org
|
||||
Pin-Priority: 1000
|
||||
' | sudo tee /etc/apt/preferences.d/mozilla
|
||||
# install packages I need
|
||||
sudo apt update
|
||||
sudo apt install -y nala
|
||||
sudo nala install -y \
|
||||
xorg `# for graphics` \
|
||||
make `# for compiling gui` \
|
||||
gcc `# for compiling gui` \
|
||||
libx11-dev `# for compiling dwm` \
|
||||
libxft-dev `# for compiling dwm` \
|
||||
libxinerama-dev `# for compiling dwm` \
|
||||
libharfbuzz-dev `# for compiling st` \
|
||||
suckless-tools `# for dmenu` \
|
||||
ncdu `# for disk usage analysys` \
|
||||
brightnessctl `# for keyboard backlight` \
|
||||
xcompmgr `# for st opacity` \
|
||||
xwallpaper `# for background` \
|
||||
ubuntu-wallpapers-jammy `# backgrounds` \
|
||||
pulseaudio `# for sound` \
|
||||
alsa-base `# for sound` \
|
||||
pavucontrol `# for audio control` \
|
||||
pasystray `# for audio control` \
|
||||
iputils-ping `# ping etc.` \
|
||||
xfe `# classic file manager` \
|
||||
surf `# suckless lightweight browser` \
|
||||
micro `# console editor` \
|
||||
neovim `# console editor` \
|
||||
psmisc `# pstree etc.` \
|
||||
slack \
|
||||
firefox \
|
||||
python3 \
|
||||
python3-venv \
|
||||
libnvidia-compute-545 `# for mpv + nvidia` \
|
||||
nvidia-driver-545 `# nvidia driver` \
|
||||
nvidia-cuda-toolkit `# cuda driver`
|
||||
|
||||
# install telegram
|
||||
if [ ! -d /opt/Telegram ]
|
||||
then
|
||||
if [ ! -f telegram.tar.xz ]
|
||||
then
|
||||
curl -L https://telegram.org/dl/desktop/linux -o telegram.tar.xz
|
||||
fi
|
||||
tar -xf telegram.tar.xz
|
||||
rm -f telegram.tar.xz
|
||||
sudo mv Telegram /opt/
|
||||
fi
|
||||
|
||||
# remove snap cause I hate it
|
||||
sudo systemctl disable --now snapd
|
||||
sudo apt purge snapd -y
|
||||
# remove autoinstalled stterm
|
||||
sudo apt remove stterm -y
|
||||
|
||||
|
||||
if [ ! -d ~/gui ]
|
||||
then
|
||||
git clone https://git.digitalstudium.com/digitalstudium/ubuntu-gui ~/gui
|
||||
fi
|
||||
|
||||
for tool in dwm st sent
|
||||
do
|
||||
# compiling dwm
|
||||
if ! command -v $tool &> /dev/null
|
||||
then
|
||||
cd ~/gui/$tool
|
||||
sudo make install clean
|
||||
cd -
|
||||
fi
|
||||
done
|
||||
|
||||
echo dwm > ~/.xinitrc # for starting dwm when startx
|
||||
|
||||
for tool in create_systemd_service.py create_systemd_timer.py set_brightness.sh update_gui.sh
|
||||
do
|
||||
if ! command -v $tool &> /dev/null
|
||||
then
|
||||
sudo cp $tool /usr/local/bin
|
||||
fi
|
||||
done
|
||||
|
||||
git config --global user.name "Digital Studium"
|
||||
git config --global user.email "digitalstudium001@gmail.com"
|
||||
|
||||
sudo create_systemd_service.py gui-updater /usr/local/bin/update_gui.sh
|
||||
sudo create_systemd_timer.py gui-updater '*-*-* *:*:*'
|
||||
|
||||
if [ ! -d ~/.dwm ]
|
||||
then
|
||||
mkdir $HOME/.dwm
|
||||
fi
|
||||
echo "xhost +local:" > $HOME/.dwm/autostart.sh # give permissions to display
|
||||
echo "xcompmgr &" >> $HOME/.dwm/autostart.sh # for st opacity
|
||||
echo "xwallpaper --stretch /usr/share/backgrounds/Blue_flower_by_Elena_Stravoravdi.jpg" >> $HOME/.dwm/autostart.sh # background
|
||||
echo "firefox &" >> $HOME/.dwm/autostart.sh
|
||||
echo "Telegram &" >> $HOME/.dwm/autostart.sh
|
||||
echo "st &" >> $HOME/.dwm/autostart.sh
|
||||
echo "pasystray &" >> $HOME/.dwm/autostart.sh
|
||||
chmod +x $HOME/.dwm/autostart.sh
|
||||
|
||||
sudo timedatectl set-timezone Europe/Moscow
|
||||
|
||||
sudo bash -c "echo 'PATH=\$(find /opt/ -executable -type f | grep -v \.so | xargs dirname | uniq | paste -s -d : | xargs -I _ echo \$PATH:_)' > /etc/profile.d/opt.sh"
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
#!/bin/bash
|
||||
# for nvidia-container-toolkit
|
||||
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
|
||||
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
|
||||
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
|
||||
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
|
||||
# for nodejs/opencommit
|
||||
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
|
||||
# obs-studio repo
|
||||
sudo add-apt-repository ppa:obsproject/obs-studio -y
|
||||
# for tensorrt (remove backgrount in obs)
|
||||
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
|
||||
sudo dpkg -i cuda-keyring_1.1-1_all.deb
|
||||
rm -f cuda-keyring_1.1-1_all.deb
|
||||
|
||||
# apt packages
|
||||
sudo nala update
|
||||
sudo nala install -y \
|
||||
mpv `# for video playing` \
|
||||
sxiv `# for pictures` \
|
||||
strace `# for tracing` \
|
||||
docker.io `# containers` \
|
||||
docker-compose `# containers` \
|
||||
nvidia-container-toolkit `# containers` \
|
||||
nodejs `# for opencommit` \
|
||||
ffmpeg `# for video` \
|
||||
v4l2loopback-dkms `# for obs-studio` \
|
||||
obs-studio `# for screen recording` \
|
||||
python3-pip `# pip` \
|
||||
tensorrt-libs \
|
||||
bat \
|
||||
locales \
|
||||
fzf \
|
||||
scrot `# screenshots` \
|
||||
libreadline-dev `# for nnn` \
|
||||
nnn `# nnn is file manager` \
|
||||
pandoc `# pandoc onvers markdown to html` \
|
||||
cutycapt `# for converting html to image` \
|
||||
vifm `# vifm is file manager` \
|
||||
farbfeld `# for sent`
|
||||
|
||||
sudo locale-gen ru_RU
|
||||
sudo locale-gen ru_RU.UTF-8
|
||||
sudo update-locale
|
||||
|
||||
# lf settings
|
||||
sudo cp lf_preview.sh /usr/local/bin
|
||||
cat << 'EOF' > lfrc
|
||||
set sixel true
|
||||
set previewer lf_preview.sh
|
||||
cmd trash %set -f; mv $fx ~/.trash
|
||||
map <delete> trash
|
||||
map i $batcat --force-colorization $f
|
||||
map x $$f
|
||||
map o $mimeopen --ask $f
|
||||
EOF
|
||||
|
||||
sudo mkdir /etc/lf
|
||||
sudo cp lfrc /etc/lf
|
||||
rm -f lfrc
|
||||
|
||||
if [ ! -f /etc/docker/daemon.json ]
|
||||
then
|
||||
sudo nvidia-ctk runtime configure --runtime=docker --set-as-default
|
||||
sudo service docker restart
|
||||
fi
|
||||
|
||||
sudo docker swarm init
|
||||
sudo docker stack deploy -c ollama-stack.yaml ollama
|
||||
|
||||
# this is needed for pavucontrol/docker working not under sudo only
|
||||
for group in audio pulse-access pulse docker
|
||||
do
|
||||
sudo usermod -a -G $group $USER
|
||||
done
|
||||
|
||||
# background removal for obs-studio
|
||||
if [ ! -d /usr/share/obs/obs-plugins/obs-backgroundremoval ]
|
||||
then
|
||||
wget https://github.com/occ-ai/obs-backgroundremoval/releases/download/1.1.10/obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
sudo apt install -y ./obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
rm -f obs-backgroundremoval-1.1.10-x86_64-linux-gnu.deb
|
||||
fi
|
||||
|
||||
# install lf
|
||||
if ! command -v lf &> /dev/null
|
||||
then
|
||||
wget https://github.com/gokcehan/lf/releases/download/r31/lf-linux-amd64.tar.gz
|
||||
tar -xvzf lf-linux-amd64.tar.gz
|
||||
sudo mv ./lf /usr/local/bin/
|
||||
rm -f lf-linux-amd64.tar.gz
|
||||
fi
|
||||
|
||||
# install lazygit
|
||||
if ! command -v lazygit &> /dev/null
|
||||
then
|
||||
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": "v\K[^"]*')
|
||||
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/latest/download/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
|
||||
tar xf lazygit.tar.gz lazygit
|
||||
sudo install lazygit /usr/local/bin
|
||||
rm -rf ./lazygit*
|
||||
fi
|
||||
|
||||
# install opencommit
|
||||
if ! command -v opencommit &> /dev/null
|
||||
then
|
||||
git clone --depth 1 https://git.digitalstudium.com/digitalstudium/opencommit.git
|
||||
cd opencommit
|
||||
npm run build
|
||||
npm pack
|
||||
sudo npm install -g opencommit-3.0.11.tgz
|
||||
cd -
|
||||
rm -rf opencommit
|
||||
oco config set OCO_AI_PROVIDER=ollama
|
||||
fi
|
||||
|
||||
# install pet
|
||||
if ! command -v pet &> /dev/null
|
||||
then
|
||||
wget https://github.com/knqyf263/pet/releases/download/v0.3.6/pet_0.3.6_linux_amd64.deb
|
||||
sudo apt install -y ./pet_0.3.6_linux_amd64.deb
|
||||
rm -f pet_0.3.6_linux_amd64.deb
|
||||
fi
|
||||
|
||||
# install kubectl
|
||||
if ! command -v kubectl &> /dev/null
|
||||
then
|
||||
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
|
||||
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
|
||||
rm -f kubectl
|
||||
fi
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
MIME=$(mimetype --all --brief "$1")
|
||||
#echo "$MIME"
|
||||
|
||||
case "$MIME" in
|
||||
# .pdf
|
||||
*application/pdf*)
|
||||
pdftotext "$1" -
|
||||
;;
|
||||
# .jpeg, png etc.
|
||||
*image/*)
|
||||
chafa -f sixel -s "$2x$3" "$1" --polite on
|
||||
;;
|
||||
# .7z
|
||||
*application/x-7z-compressed*)
|
||||
7z l "$1"
|
||||
;;
|
||||
# .tar .tar.Z
|
||||
*application/x-tar*)
|
||||
tar -tvf "$1"
|
||||
;;
|
||||
# .tar.*
|
||||
*application/x-compressed-tar*|*application/x-*-compressed-tar*)
|
||||
tar -tvf "$1"
|
||||
;;
|
||||
# .rar
|
||||
*application/vnd.rar*)
|
||||
unrar l "$1"
|
||||
;;
|
||||
# .zip
|
||||
*application/zip*)
|
||||
unzip -l "$1"
|
||||
;;
|
||||
*text/markdown*)
|
||||
pandoc $1 > /tmp/lf_preview.html && cutycapt --url=file:///tmp/lf_preview.html --out=/tmp/lf_preview.png && chafa -s "$2x$3" -f sixel /tmp/lf_preview.png --polite on
|
||||
;;
|
||||
# any plain text file that doesn't have a specific handler
|
||||
*text/plain*)
|
||||
# return false to always repaint, in case terminal size changes
|
||||
batcat --force-colorization --paging=never --style=changes,numbers \
|
||||
--terminal-width $(($2 - 3)) "$1" && false
|
||||
;;
|
||||
*)
|
||||
echo "unknown format"
|
||||
;;
|
||||
esac
|
|
@ -0,0 +1,24 @@
|
|||
version: '3.9'
|
||||
|
||||
services:
|
||||
ollama:
|
||||
image: ollama/ollama:latest
|
||||
deploy:
|
||||
replicas: 1
|
||||
ports:
|
||||
- 11434:11434
|
||||
volumes:
|
||||
- ollama:/root/.ollama
|
||||
|
||||
open-webui:
|
||||
image: ghcr.io/open-webui/open-webui:git-cd92cf0
|
||||
ports:
|
||||
- 3000:8080
|
||||
volumes:
|
||||
- open-webui:/app/backend/data
|
||||
environment:
|
||||
- 'OLLAMA_BASE_URL=http://ollama:11434'
|
||||
|
||||
volumes:
|
||||
ollama: {}
|
||||
open-webui: {}
|
|
@ -0,0 +1,20 @@
|
|||
# 1. extract audio from all videos (assuming .mp4 videos).
|
||||
for FILE in *.mp4; do ffmpeg -i $FILE ${FILE%%.mp4}.wav; done
|
||||
|
||||
# 2. use the first second of the first audio file as the noise sample.
|
||||
sox `ls *.wav | head -1` -n trim 0 1 noiseprof noise.prof
|
||||
|
||||
# Replace with a specific noise sample file if the first second doesn't work for you:
|
||||
# sox noise.wav -n noiseprof noise.prof
|
||||
|
||||
# 3. clean the audio with noise reduction and normalise filters.
|
||||
for FILE in *.wav; do sox -S --multi-threaded --buffer 131072 $FILE ${FILE%%.wav}.norm.wav noisered noise.prof 0.21 norm; done
|
||||
|
||||
# 4. re-insert audio into the videos.
|
||||
# If you need to include an audio offset (+/- n seconds), add parameter "-itsoffset n" after the second -i parameter.
|
||||
for FILE in *.norm.wav; do ffmpeg -i ${FILE%%.norm.wav}.mp4 -i $FILE -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 ${FILE%%.norm.wav}.sync.mp4; done
|
||||
|
||||
# 5. Remove artefacts
|
||||
rm -f *.wav noise.prof
|
||||
|
||||
# 6. That's it. You're done!
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
H=$(date +%k)
|
||||
|
||||
if (( $H >= 0 && $H <= 7 )); then
|
||||
/usr/bin/xrandr --output eDP --brightness .2
|
||||
sudo /usr/bin/brightnessctl --device='asus::kbd_backlight' set 3
|
||||
elif (( $H > 7 && $H <= 10 )); then
|
||||
/usr/bin/xrandr --output eDP --brightness .5
|
||||
sudo /usr/bin/brightnessctl --device='asus::kbd_backlight' set 1
|
||||
elif (( $H > 10 && $H < 17 )); then
|
||||
/usr/bin/xrandr --output eDP --brightness .7
|
||||
sudo /usr/bin/brightnessctl --device='asus::kbd_backlight' set 0
|
||||
elif (( $H >= 17 && $H <= 22 )); then
|
||||
/usr/bin/xrandr --output eDP --brightness .5
|
||||
sudo /usr/bin/brightnessctl --device='asus::kbd_backlight' set 1
|
||||
elif (( $H > 22 && $H <= 23 )); then
|
||||
/usr/bin/xrandr --output eDP --brightness .3
|
||||
sudo /usr/bin/brightnessctl --device='asus::kbd_backlight' set 2
|
||||
else
|
||||
echo "Error"
|
||||
fi
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
version: '3.9'
|
||||
|
||||
services:
|
||||
sd:
|
||||
image: goolashe/automatic1111-sd-webui
|
||||
ports:
|
||||
- "${WEBUI_PORT:-7860}:7860"
|
||||
stop_signal: SIGKILL
|
||||
tty: true
|
||||
environment:
|
||||
- CLI_ARGS=--allow-code --medvram --xformers --enable-insecure-extension-access --api
|
||||
volumes:
|
||||
- sd-data:/data
|
||||
- sd-output:/output
|
||||
volumes:
|
||||
sd-data: {}
|
||||
sd-output: {}
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
export DISPLAY=:0
|
||||
set_brightness.sh # set monitor brightness
|
||||
battery_capacity=$(cat /sys/class/power_supply/BAT0/capacity)
|
||||
MEM=$(free -h --kilo | awk '/^Mem:/ {print $3 "/" $2}')
|
||||
CPU=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}' )
|
||||
DISK=$(df -Ph | grep "/dev/mapper/ubuntu--vg-ubuntu--lv" | awk {'print $5'})
|
||||
|
||||
/usr/bin/xsetroot -name "$battery_capacity% `date +"%a %d.%m %H:%M"`;MEM: $MEM CPU: $CPU% DISK: $DISK" # set systray
|
Loading…
Reference in New Issue