added remove_unused function, improved shell formatting, added comments to some packages, removed deno setup, combined optimus manager setup with gnome setup, combined gpick setup with gnome setup, combined graphics setup with gnome setup, removed hardinfo setup, made virtualmox setup arch compatible, made vlc obs browser compatible, improved backup code, and removed arch install function.
This commit is contained in:
parent
79c22877b1
commit
191b524f7e
1 changed files with 163 additions and 179 deletions
238
setup.sh
238
setup.sh
|
@ -8,6 +8,7 @@
|
||||||
# Installs essential packages and defining important functions
|
# Installs essential packages and defining important functions
|
||||||
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||||
|
DATA_PATH="/media/pomp/data"
|
||||||
POST_INSTALL=()
|
POST_INSTALL=()
|
||||||
|
|
||||||
BOLD="\e[1m"
|
BOLD="\e[1m"
|
||||||
|
@ -86,8 +87,14 @@ setup_essentials() {
|
||||||
log "dialog was not installed already. Installing now..."
|
log "dialog was not installed already. Installing now..."
|
||||||
package_install dialog
|
package_install dialog
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_unused() {
|
||||||
|
# unused packages from https://gitlab.archlinux.org/archlinux/archiso/-/blob/master/configs/releng/packages.x86_64
|
||||||
|
|
||||||
|
package_remove \
|
||||||
|
irssi \
|
||||||
|
|
||||||
# enable multilib, color, parallel download, and total download in /etc/pacman.conf
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -140,7 +147,7 @@ setup_cpu_undervolting() {
|
||||||
# https://wiki.archlinux.org/index.php/Undervolting_CPU
|
# https://wiki.archlinux.org/index.php/Undervolting_CPU
|
||||||
|
|
||||||
package_install \
|
package_install \
|
||||||
intel-undervolt \
|
intel-undervolt `# CPU undervolting for less heat and power consumption` \
|
||||||
|
|
||||||
config_file=/etc/intel-undervolt.conf
|
config_file=/etc/intel-undervolt.conf
|
||||||
|
|
||||||
|
@ -165,20 +172,14 @@ setup_cpu_undervolting() {
|
||||||
|
|
||||||
setup_cpupower_gui() {
|
setup_cpupower_gui() {
|
||||||
package_install \
|
package_install \
|
||||||
cpupower-gui \
|
cpupower-gui `# CPU overclocking` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_dconf() {
|
setup_dconf() {
|
||||||
:
|
:
|
||||||
# must be done after install to make sure configs are not overwritten
|
# must be done after install to make sure configs are not overwritten
|
||||||
# dconf load / < $SCRIPT_DIR/dconf.conf
|
# dconf load / < dconf/configuration.conf
|
||||||
}
|
|
||||||
|
|
||||||
setup_deno() {
|
|
||||||
package_install \
|
|
||||||
deno \
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_discord() {
|
setup_discord() {
|
||||||
|
@ -186,8 +187,8 @@ setup_discord() {
|
||||||
|
|
||||||
package_install \
|
package_install \
|
||||||
discord \
|
discord \
|
||||||
betterdiscordctl-git \
|
betterdiscordctl-git `# BetterDiscord installer` \
|
||||||
discord-overlay-git \
|
discord-overlay-git `# Discord voice chat overlay` \
|
||||||
|
|
||||||
betterdiscordctl install
|
betterdiscordctl install
|
||||||
|
|
||||||
|
@ -306,19 +307,38 @@ setup_fonts() {
|
||||||
|
|
||||||
setup_dotnet() {
|
setup_dotnet() {
|
||||||
package_install \
|
package_install \
|
||||||
dotnet-sdk \
|
dotnet-sdk `# .NET SDK` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_gimp() {
|
setup_gimp() {
|
||||||
package_install \
|
package_install \
|
||||||
gimp \
|
gimp `# photoshop but FOSS` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_gnome() {
|
setup_gnome() {
|
||||||
|
# nvidia driver, optimus manager, etc.
|
||||||
|
|
||||||
|
# Not using power switching
|
||||||
|
# read this wiki[^1] about power management with acpi call for more information
|
||||||
|
# [^1]: https://github.com/Askannz/optimus-manager/wiki/A-guide--to-power-management-options#configuration-4--acpi_call
|
||||||
|
|
||||||
|
package_install \
|
||||||
|
gwe `# nvidia GPU overclocking https://gitlab.com/leinardi/gwe` \
|
||||||
|
optimus-manager `# https://github.com/Askannz/optimus-manager` \
|
||||||
|
optimus-manager-qt `# https://github.com/Shatur/optimus-manager-qt` \
|
||||||
|
gdm-prime `# ` \
|
||||||
|
|
||||||
|
# launch on startup
|
||||||
|
# nvidia as default
|
||||||
|
|
||||||
|
# Performance: 265, 750
|
||||||
|
# Energy Saver: -155, -365
|
||||||
|
|
||||||
package_install \
|
package_install \
|
||||||
baobab `# Disk usage analysis` \
|
baobab `# Disk usage analysis` \
|
||||||
|
gpick `# color picker` \
|
||||||
dconf-editor `# GUI for dconf` \
|
dconf-editor `# GUI for dconf` \
|
||||||
gnome-characters `# Search for emojis, special characters, and symbols` \
|
gnome-characters `# Search for emojis, special characters, and symbols` \
|
||||||
gnome-clocks `# For multiple clocks for different time zones` \
|
gnome-clocks `# For multiple clocks for different time zones` \
|
||||||
|
@ -350,12 +370,7 @@ setup_gnome() {
|
||||||
killall -3 gnome-shell
|
killall -3 gnome-shell
|
||||||
|
|
||||||
POST_INSTALL+=("gnome: enable gnome extensions")
|
POST_INSTALL+=("gnome: enable gnome extensions")
|
||||||
}
|
POST_INSTALL+=("gnome: reboot")
|
||||||
|
|
||||||
setup_gpick() {
|
|
||||||
package_install \
|
|
||||||
gpick \
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_go() {
|
setup_go() {
|
||||||
|
@ -366,56 +381,38 @@ setup_go() {
|
||||||
|
|
||||||
setup_godot() {
|
setup_godot() {
|
||||||
package_install \
|
package_install \
|
||||||
godot \
|
godot `# game engine` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_graphics() {
|
|
||||||
# https://wiki.manjaro.org/index.php/Configure_Graphics_Cards#Automated_Identification_and_Installation
|
|
||||||
sudo mhwd -a pci nonfree 0300
|
|
||||||
|
|
||||||
# /etc/X11/Xwrapper.config write:
|
|
||||||
# allowed_users=anybody
|
|
||||||
# needs_root_rights=yes
|
|
||||||
|
|
||||||
# sudo chmod u+s /usr/lib/Xorg.wrap
|
|
||||||
POST_INSTALL+=("Graphics: Reboot")
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_gsmartcontrol() {
|
setup_gsmartcontrol() {
|
||||||
package_install \
|
package_install \
|
||||||
gsmartcontrol \
|
gsmartcontrol `# disk health checker` \
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_hardinfo() {
|
|
||||||
package_install \
|
|
||||||
hardinfo \
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_inkscape() {
|
setup_inkscape() {
|
||||||
package_install \
|
package_install \
|
||||||
inkscape \
|
inkscape `# adobe illustrator but FOSS` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_java() {
|
setup_java() {
|
||||||
package_install \
|
package_install \
|
||||||
jdk `# oracle java development kit` \
|
jdk `# oracle java development kit` \
|
||||||
jdk8 `# ` \
|
jdk8 `# oracle JDK but license is not gay` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_kdenlive() {
|
setup_kdenlive() {
|
||||||
package_install \
|
package_install \
|
||||||
kdenlive-appimage \
|
kdenlive-appimage `# video editing` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_keyboard() {
|
setup_keyboard() {
|
||||||
package_install \
|
package_install \
|
||||||
ibus-hangul \
|
ibus-hangul `# Korean keyboard support` \
|
||||||
|
|
||||||
POST_INSTALL+=("keyboard: setup korean keyboard and reboot")
|
POST_INSTALL+=("keyboard: setup korean keyboard and reboot")
|
||||||
}
|
}
|
||||||
|
@ -423,25 +420,26 @@ setup_keyboard() {
|
||||||
setup_local() {
|
setup_local() {
|
||||||
# setup for applications in second drive
|
# setup for applications in second drive
|
||||||
# add to application menu
|
# add to application menu
|
||||||
# office 2019 wine
|
|
||||||
|
|
||||||
if [[ -d /media/pomp/data/programs/dnSpy-net-win32 ]]; then
|
if [[ -d /media/pomp/data/programs/dnSpy-net-win32 ]]; then
|
||||||
log "dnspy"
|
log "dnspy"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d /media/pomp/data/programs/tor-browser ]]; then
|
if [[ -d /media/pomp/data/programs/tor-browser ]]; then
|
||||||
log "tor"
|
log "tor browser"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_middleclickpaste() {
|
setup_middleclickpaste() {
|
||||||
:
|
package_install \
|
||||||
# make it autostart
|
xmousepasteblock-git `# prevents middle click paste` \
|
||||||
|
|
||||||
|
# todo: make it autostart
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_mystiq() {
|
setup_mystiq() {
|
||||||
package_install \
|
package_install \
|
||||||
mystiq \
|
mystiq `# video converter` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -449,7 +447,6 @@ setup_node() {
|
||||||
package_install \
|
package_install \
|
||||||
nodejs `# Javascript on servers!` \
|
nodejs `# Javascript on servers!` \
|
||||||
yarn `# better node package manager` \
|
yarn `# better node package manager` \
|
||||||
deno `# node++ or smth` \
|
|
||||||
|
|
||||||
# https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
|
# https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally
|
||||||
# export PATH="$(yarn global bin):$PATH"
|
# export PATH="$(yarn global bin):$PATH"
|
||||||
|
@ -458,55 +455,43 @@ setup_node() {
|
||||||
setup_obs() {
|
setup_obs() {
|
||||||
package_install \
|
package_install \
|
||||||
obs-plugin-input-overlay-bin `# show inputs in OBS` \
|
obs-plugin-input-overlay-bin `# show inputs in OBS` \
|
||||||
obs-studio-browser `# screen recording and streaming` \
|
obs-studio-browser `# screen recording and streaming with browser overlay support` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_optimus_manager() {
|
|
||||||
# Not using power switching
|
|
||||||
# read this wiki[^1] about power management with acpi call for more information
|
|
||||||
# [^1]: https://github.com/Askannz/optimus-manager/wiki/A-guide--to-power-management-options#configuration-4--acpi_call
|
|
||||||
|
|
||||||
package_install \
|
|
||||||
gwe `# nvidia GPU overclocking https://gitlab.com/leinardi/gwe` \
|
|
||||||
optimus-manager `# https://github.com/Askannz/optimus-manager` \
|
|
||||||
optimus-manager-qt `# https://github.com/Shatur/optimus-manager-qt` \
|
|
||||||
gdm-prime `# ` \
|
|
||||||
|
|
||||||
# launch on startup
|
|
||||||
# nvidia as default
|
|
||||||
|
|
||||||
# Performance: 265, 750
|
|
||||||
# Energy Saver: -155, -365
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_osu() {
|
setup_osu() {
|
||||||
package_install \
|
package_install \
|
||||||
osu \
|
osu `# osu stable` \
|
||||||
|
osu-lazer-bin `# osu lazer` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup_pacman() {
|
||||||
|
# enable multilib, color, parallel download, and total download in /etc/pacman.conf
|
||||||
|
:
|
||||||
|
}
|
||||||
|
|
||||||
setup_pamac() {
|
setup_pamac() {
|
||||||
package_install \
|
package_install \
|
||||||
pamac_aur \
|
pamac_aur `# package manager GUI with AUR support` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_pavucontrol() {
|
setup_pavucontrol() {
|
||||||
package_install \
|
package_install \
|
||||||
pavucontrol \
|
pavucontrol `# PulseAudio settings I use for redirecting desktop audio to microphone input` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_pip() {
|
setup_pip() {
|
||||||
package_install \
|
package_install \
|
||||||
python-pip \
|
python-pip `# package installer for python` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_piper() {
|
setup_piper() {
|
||||||
package_install \
|
package_install \
|
||||||
piper \
|
piper `# gaming mouse settings GUI` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,89 +501,86 @@ setup_rust() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_shfmt() {
|
|
||||||
:
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_timeshift() {
|
setup_timeshift() {
|
||||||
package_install \
|
package_install \
|
||||||
timeshift \
|
timeshift `# backup and restore system` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_torrential() {
|
setup_torrential() {
|
||||||
package_install \
|
package_install \
|
||||||
torrential \
|
torrential `torrent client` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_unity() {
|
setup_unity() {
|
||||||
package_install \
|
package_install \
|
||||||
unityhub \
|
unityhub `# game engine` \
|
||||||
|
|
||||||
POST_INSTALL+=("Setup vscode for Unity")
|
POST_INSTALL+=("Change editors location")
|
||||||
POST_INSTALL+=("Change editor location")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_user_directories() {
|
setup_user_directories() {
|
||||||
:
|
cat > ~/.config/user-dirs.dirs <<EOL
|
||||||
# edit ~/.config/user-dirs.dirs:
|
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||||
|
XDG_DOWNLOAD_DIR="/media/pomp/data/Downloads"
|
||||||
# XDG_DESKTOP_DIR="$HOME/Desktop"
|
XDG_TEMPLATES_DIR="$HOME/Templates"
|
||||||
# XDG_DOWNLOAD_DIR="/media/pomp/data/Downloads"
|
XDG_PUBLICSHARE_DIR="$HOME/Public"
|
||||||
# XDG_TEMPLATES_DIR="$HOME/Templates"
|
XDG_DOCUMENTS_DIR="/media/pomp/data/Documents"
|
||||||
# XDG_PUBLICSHARE_DIR="$HOME/Public"
|
XDG_MUSIC_DIR="/media/pomp/data/Music"
|
||||||
# XDG_DOCUMENTS_DIR="/media/pomp/data/Documents"
|
XDG_PICTURES_DIR="/media/pomp/data/Pictures"
|
||||||
# XDG_MUSIC_DIR="/media/pomp/data/Music"
|
XDG_VIDEOS_DIR="/media/pomp/data/Videos"
|
||||||
# XDG_PICTURES_DIR="/media/pomp/data/Pictures"
|
EOL
|
||||||
# XDG_VIDEOS_DIR="/media/pomp/data/Videos"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_virtualbox() {
|
setup_virtualbox() {
|
||||||
# https://wiki.manjaro.org/index.php/VirtualBox
|
# https://wiki.archlinux.org/title/VirtualBox
|
||||||
|
|
||||||
package_install \
|
package_install \
|
||||||
virtualbox \
|
virtualbox \
|
||||||
linux510-virtualbox-host-modules \
|
virtualbox-host-modules-arch \
|
||||||
virtualbox-ext-oracle \
|
virtualbox-ext-oracle \
|
||||||
|
|
||||||
sudo vboxreload
|
sudo systemctl enable systemd-modules-load
|
||||||
|
sudo systemctl start systemd-modules-load
|
||||||
|
sudo modprobe vboxdrv
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_vscode() {
|
setup_vscode() {
|
||||||
package_install \
|
package_install \
|
||||||
visual-studio-code-bin \
|
visual-studio-code-bin `# proprietary vscode build` \
|
||||||
|
|
||||||
POST_INSTALL+=("vscode: log in")
|
POST_INSTALL+=("vscode: log in")
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_vim() {
|
setup_vim() {
|
||||||
package_install \
|
package_install \
|
||||||
vim \
|
vim-plug `# vim plugin manager` \
|
||||||
|
|
||||||
|
# todo: install plugins
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_vlc() {
|
setup_vlc() {
|
||||||
package_install \
|
package_install \
|
||||||
vlc \
|
vlc-luajit `# media player compatible with obs-studio-browser` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_wine() {
|
setup_wine() {
|
||||||
package_install \
|
package_install \
|
||||||
wine \
|
wine `# compatibility layer` \
|
||||||
wine-gecko \
|
wine-gecko `# internet explorer for wine` \
|
||||||
wine-mono \
|
wine-mono `# .NET runtime for wine` \
|
||||||
winetricks \
|
winetricks `# wine helper script` \
|
||||||
|
|
||||||
# - `WINEARCH=win32 WINEPREFIX=~/.win32/ winecfg`
|
# WINEARCH=win32 WINEPREFIX=~/.win32/ winecfg
|
||||||
# - `winetricks allfonts`
|
# winetricks allfonts
|
||||||
# - `winetricks settings fontsmooth=rgb`
|
# winetricks settings fontsmooth=rgb
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_wireshark() {
|
setup_wireshark() {
|
||||||
package_install \
|
package_install \
|
||||||
wireshark-gtk2 \
|
wireshark-gtk2 `# network protocol analyzer with gtk frontend` \
|
||||||
|
|
||||||
sudo usermod -a -G wireshark $USER
|
sudo usermod -a -G wireshark $USER
|
||||||
POST_INSTALL+=("wireshark: reboot")
|
POST_INSTALL+=("wireshark: reboot")
|
||||||
|
@ -606,35 +588,40 @@ setup_wireshark() {
|
||||||
|
|
||||||
setup_wps_office() {
|
setup_wps_office() {
|
||||||
package_install \
|
package_install \
|
||||||
wps-office \
|
wps-office `# MS office but free` \
|
||||||
ttf-wps-fonts \
|
ttf-wps-fonts `# WPS office fonts` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_zoom() {
|
setup_zoom() {
|
||||||
package_install \
|
package_install \
|
||||||
zoom \
|
zoom `# gay video conference app` \
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_zsh() {
|
setup_zsh() {
|
||||||
:
|
package_install \
|
||||||
|
oh-my-zsh-git `# for zsh plugins` \
|
||||||
|
zsh-theme-powerlevel10k `# make zsh look pretty` \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# #################### [ INSTALL ] ####################
|
# #################### [ INSTALL ] ####################
|
||||||
|
|
||||||
backup() {
|
backup() {
|
||||||
dconf dump / > "$SCRIPT_DIR/dconf.conf"
|
TIMESTAMP=$(date +%s)
|
||||||
# copy /home/pomp directory
|
# backup dconf configuration
|
||||||
# timeshift settings
|
dconf dump / > "$SCRIPT_DIR/dconf$TIMESTAMP.conf"
|
||||||
sudo timeshift --create --comments "auto created by developomp setup script"
|
|
||||||
}
|
|
||||||
|
|
||||||
install_arch() {
|
# make a home directory backup
|
||||||
:
|
rsync -a --info=progress2 --perms /home/pomp "$DATA_PATH/backup$TIMESTAMP"
|
||||||
# check if drives exist
|
|
||||||
# if $RESET$BOLD/media/pomp/data$GREEN exists in fstab and is mounted
|
# create timeshift backup
|
||||||
|
if ! command -v timeshift &> /dev/null; then
|
||||||
|
error "failed to create timeshift backup. Timeshift command not found."
|
||||||
|
else
|
||||||
|
sudo timeshift --create --comments "auto created by developomp setup script ($TIMESTAMP)"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -657,7 +644,7 @@ fi
|
||||||
|
|
||||||
# move to script directory (repo root)
|
# move to script directory (repo root)
|
||||||
cd "$SCRIPT_DIR" || {
|
cd "$SCRIPT_DIR" || {
|
||||||
error "FAILED TO FIND SCRIPT DIRECTORY"
|
error "FAILED TO GO TO SCRIPT DIRECTORY"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -678,13 +665,10 @@ fi
|
||||||
|
|
||||||
setup_essentials
|
setup_essentials
|
||||||
|
|
||||||
cmd=(dialog --separate-output --checklist "Select Setup Operations to perform" 20 50 5)
|
|
||||||
|
|
||||||
options=(
|
options=(
|
||||||
"4k_video_downloader" "" off
|
"4k_video_downloader" "" off
|
||||||
"blender" "" off
|
"blender" "" off
|
||||||
"brave" "" off
|
"brave" "" off
|
||||||
"deno" "" off
|
|
||||||
"discord" "" off
|
"discord" "" off
|
||||||
"dotnet" "" off
|
"dotnet" "" off
|
||||||
"fonts" "" off
|
"fonts" "" off
|
||||||
|
@ -711,6 +695,8 @@ options=(
|
||||||
"zoom" "" off
|
"zoom" "" off
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# choose from available options
|
||||||
|
cmd=(dialog --separate-output --checklist "Select Setup Operations to perform" 20 50 5)
|
||||||
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
|
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
|
||||||
clear
|
clear
|
||||||
for choice in $choices; do
|
for choice in $choices; do
|
||||||
|
@ -721,8 +707,6 @@ for choice in $choices; do
|
||||||
setup_blender;;
|
setup_blender;;
|
||||||
"brave")
|
"brave")
|
||||||
setup_brave;;
|
setup_brave;;
|
||||||
"deno")
|
|
||||||
setup_deno;;
|
|
||||||
"discord")
|
"discord")
|
||||||
setup_discord;;
|
setup_discord;;
|
||||||
"dotnet")
|
"dotnet")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue