1
0
Fork 0

applied shfmt

This commit is contained in:
Kim, Jimin 2021-10-27 12:38:10 +09:00
parent d0171a4940
commit 8161ca69ca
2 changed files with 357 additions and 294 deletions

View file

@ -4,7 +4,7 @@
--- ---
[![LICENSE: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](./LICENSE) [![LICENSE: MIT](https://img.shields.io/badge/License-MIT-green?style=for-the-badge)](./LICENSE) [![FORMATTER: SHFMT](https://img.shields.io/badge/formatter-shfmt-darkgrey?style=for-the-badge)](https://marketplace.visualstudio.com/items?itemName=foxundermoon.shell-format)
## Purpose ## Purpose

349
setup.sh
View file

@ -3,11 +3,10 @@
# don't remove line after package_install # don't remove line after package_install
# it will result in this syntax error: unexpected end of file # it will result in this syntax error: unexpected end of file
# #################### [ ESSENTIALS ] #################### # #################### [ ESSENTIALS ] ####################
# 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" DATA_PATH="/media/pomp/data"
POST_INSTALL=() POST_INSTALL=()
@ -39,7 +38,7 @@ warn() {
} }
error() { error() {
>&2 echo -e " $RED$BOLD ERROR | $*$RESET" echo >&2 -e " $RED$BOLD ERROR | $*$RESET"
} }
title() { title() {
@ -65,39 +64,40 @@ package_remove() {
setup_essentials() { setup_essentials() {
# install pamac if it does not exist # install pamac if it does not exist
if ! command -v pamac &> /dev/null; then if ! command -v pamac &>/dev/null; then
log "pamac was not installed already. Installing now..." log "pamac was not installed already. Installing now..."
setup_pamac setup_pamac
fi fi
# install dialog if it's not installed already # install dialog if it's not installed already
if ! command -v dialog &> /dev/null; then if ! command -v dialog &>/dev/null; then
log "dialog was not installed already. Installing now..." log "dialog was not installed already. Installing now..."
package_install dialog package_install dialog
fi fi
} }
load_dconf() { load_dconf() {
dconf load / < "./dconf/$1" dconf load / <"./dconf/$1"
} }
# #################### [ DEFINING SETUP ] #################### # #################### [ DEFINING SETUP ] ####################
# Define instructions on how to setup applications & stuff # Define instructions on how to setup applications & stuff
setup_4kvideodownloader() { setup_4kvideodownloader() {
package_install \ package_install \
4kvideodownloader \ 4kvideodownloader
} }
setup_blender() { setup_blender() {
package_install \ package_install \
blender \ blender
} }
setup_brave() { setup_brave() {
package_install \ package_install \
brave-bin \ brave-bin
# settings: DNS https cloudflare # settings: DNS https cloudflare
POST_INSTALL+=( POST_INSTALL+=(
@ -113,7 +113,7 @@ setup_conky() {
# vnstat: network traffic statistics # vnstat: network traffic statistics
package_install \ package_install \
conky \ conky \
vnstat \ vnstat
sudo systemctl enable vnstat sudo systemctl enable vnstat
sudo systemctl start vnstat sudo systemctl start vnstat
@ -124,7 +124,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
config_file=/etc/intel-undervolt.conf config_file=/etc/intel-undervolt.conf
@ -162,7 +162,7 @@ setup_discord() {
package_install \ package_install \
discord \ discord \
betterdiscordctl-git \ betterdiscordctl-git \
discord-overlay-git \ discord-overlay-git
BD_PLUGINS=( BD_PLUGINS=(
134 # https://betterdiscord.app/plugin/Avatar%20Hover 134 # https://betterdiscord.app/plugin/Avatar%20Hover
@ -221,7 +221,8 @@ setup_discord() {
setup_dotnet() { setup_dotnet() {
package_install \ package_install \
dotnet-sdk \ dotnet-sdk
} }
setup_fonts() { setup_fonts() {
@ -237,7 +238,7 @@ setup_fonts() {
noto-fonts-emoji \ noto-fonts-emoji \
nerd-fonts-noto-sans-mono \ nerd-fonts-noto-sans-mono \
adobe-source-han-sans-kr-fonts \ adobe-source-han-sans-kr-fonts \
ttf-baekmuk \ ttf-baekmuk
# path to temporarily save font related files # path to temporarily save font related files
fonts_directory="$SCRIPT_DIR/tmp/fonts" fonts_directory="$SCRIPT_DIR/tmp/fonts"
@ -276,7 +277,7 @@ setup_fonts() {
fi fi
# "install" all fonts # "install" all fonts
find "$fonts_directory" -type f -name "*.ttf" | while read ttf_file_path ; do find "$fonts_directory" -type f -name "*.ttf" | while read ttf_file_path; do
mv -f "$ttf_file_path" "$font_install_dir/${ttf_file_path##*/}" mv -f "$ttf_file_path" "$font_install_dir/${ttf_file_path##*/}"
done done
@ -294,19 +295,21 @@ setup_dns() {
setup_geogebra() { setup_geogebra() {
package_install \ package_install \
geogebra \ geogebra
} }
setup_gimp() { setup_gimp() {
# photoshop but FOSS # photoshop but FOSS
package_install \ package_install \
gimp \ gimp
} }
setup_git() { setup_git() {
package_install \ package_install \
git \ git
git config --global user.email "developomp@gmail.com" git config --global user.email "developomp@gmail.com"
git config --global user.name "developomp" git config --global user.name "developomp"
@ -329,14 +332,14 @@ setup_gnome() {
package_install \ package_install \
gdm-prime \ gdm-prime \
xcursor-breeze `# cursor design` \ xcursor-breeze \
matcha-gtk-theme `# gtk theme` \ matcha-gtk-theme \
papirus-icon-theme `# icon theme` \ papirus-icon-theme \
gnome-backgrounds `# wallpapers and shit` \ gnome-backgrounds \
gnome-shell-extensions `# gnome shell extensions` \ gnome-shell-extensions \
gwe `# nvidia GPU overclocking https://gitlab.com/leinardi/gwe` \ gwe \
nvidia `# nvidia GPU support` \ nvidia \
optimus-manager-qt `# https://github.com/Shatur/optimus-manager-qt` \ optimus-manager-qt
sudo systemctl enable gdm sudo systemctl enable gdm
sudo systemctl enable optimus-manager sudo systemctl enable optimus-manager
@ -351,7 +354,7 @@ setup_gnome() {
setup_gnome_apps setup_gnome_apps
cat > ~/.config/user-dirs.dirs <<EOL cat >~/.config/user-dirs.dirs <<EOL
XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="/media/pomp/data/Downloads" XDG_DOWNLOAD_DIR="/media/pomp/data/Downloads"
XDG_TEMPLATES_DIR="$HOME/Templates" XDG_TEMPLATES_DIR="$HOME/Templates"
@ -375,37 +378,63 @@ EOL
} }
setup_gnome_apps() { setup_gnome_apps() {
# install gnome apps
# alacarte: application menu editor
# baobab: Disk usage analysis
# cheese: take photo/video with camera
# dconf-editor: GUI for dconf
# eog: photo viewer
# evince: document viewer
# file-roller: compress & decompress files/directories
# gnome-calculator: scientific calculator
# gnome-characters: Search for emojis, special characters, and symbols
# gnome-clocks: For multiple clocks for different time zones
# gnome-control-center: gnome settings
# gnome-disk-utility: gnome disk management
# gnome-font-viewer: Managing fonts
# gnome-keyring: passwords and keys
# gnome-logs: GUI for systemd journal
# gnome-screenshot: take screenshots
# gnome-system-monitor: show system processes
# gnome-terminal-transparency: Transparent gnome terminal
# gnome-tweaks: shows extra settings
# gpick: color picker
# nautilus: gnome file manager
# sushi: quick previewer for nautilus
package_install \ package_install \
alacarte `# application menu editor` \ alacarte \
baobab `# Disk usage analysis` \ baobab \
cheese `# take photo/video with camera` \ cheese \
dconf-editor `# GUI for dconf` \ dconf-editor \
eog `# photo viewer` \ eog \
evince `# document viewer` \ evince \
file-roller `# compress & decompress files/directories` \ file-roller \
gnome-calculator `# scientific calculator` \ gnome-calculator \
gnome-characters `# Search for emojis, special characters, and symbols` \ gnome-characters \
gnome-clocks `# For multiple clocks for different time zones` \ gnome-clocks \
gnome-control-center `# gnome settings` \ gnome-control-center \
gnome-disk-utility `# gnome disk management` \ gnome-disk-utility \
gnome-font-viewer `# Managing fonts` \ gnome-font-viewer \
gnome-keyring `# passwords and keys` \ gnome-keyring \
gnome-logs `# GUI for systemd journal` \ gnome-logs \
gnome-screenshot `# take screenshots` \ gnome-screenshot \
gnome-system-monitor `# show system processes` \ gnome-system-monitor \
gnome-terminal-transparency `# Transparent gnome terminal` \ gnome-terminal-transparency \
gnome-tweaks `# shows extra settings` \ gnome-tweaks \
gpick `# color picker` \ gpick \
nautilus `# gnome file manager` \ nautilus \
sushi `# quick previewer for nautilus` \ sushi
} }
setup_gnome_extensions() { setup_gnome_extensions() {
# gnome-shell-extension-installer: Installation of gnome extensions from command line
# gnome-shell-extension-pop-shell-git: for window tiling
package_install \ package_install \
gnome-shell-extension-installer `# Installation of gnome extensions from command line` \ gnome-shell-extension-installer \
gnome-shell-extension-pop-shell-git `# for window tiling` \ gnome-shell-extension-pop-shell-git
# install gnome extensions # install gnome extensions
log "installing gnome extensions" log "installing gnome extensions"
@ -441,20 +470,23 @@ setup_gnome_extensions() {
} }
setup_go() { setup_go() {
# programming language
package_install \ package_install \
go \ go
} }
setup_godot() { setup_godot() {
# game engine
package_install \ package_install \
godot `# game engine` \ godot
} }
setup_grub() { setup_grub() {
# grub theme
package_install \ package_install \
grub-theme-vimix `# grub theme` \ grub-theme-vimix
# /etc/default/grub # /etc/default/grub
# GRUB_TIMEOUT=3 # GRUB_TIMEOUT=3
@ -465,26 +497,30 @@ setup_grub() {
} }
setup_gsmartcontrol() { setup_gsmartcontrol() {
# disk health checker
package_install \ package_install \
gsmartcontrol `# disk health checker` \ gsmartcontrol
} }
setup_inkscape() { setup_inkscape() {
# adobe illustrator but FOSS
package_install \ package_install \
inkscape `# adobe illustrator but FOSS` \ inkscape
} }
setup_kdenlive() { setup_kdenlive() {
# video editing
package_install \ package_install \
kdenlive-appimage `# video editing` \ kdenlive-appimage
} }
setup_keyboard() { setup_keyboard() {
# Korean keyboard support
package_install \ package_install \
ibus-hangul `# Korean keyboard support` \ ibus-hangul
POST_INSTALL+=("keyboard: setup korean keyboard and reboot") POST_INSTALL+=("keyboard: setup korean keyboard and reboot")
} }
@ -495,40 +531,51 @@ setup_marktext() {
} }
setup_middleclickpaste() { setup_middleclickpaste() {
# prevents middle click paste
package_install \ package_install \
xmousepasteblock-git `# prevents middle click paste` \ xmousepasteblock-git
# todo: make it autostart # todo: make it autostart
} }
setup_mystiq() { setup_mystiq() {
# video converter
package_install \ package_install \
mystiq `# video converter` \ mystiq
} }
setup_node() { setup_node() {
# nodejs: Javascript on servers!
# npm: node package manager
# yarn: better node package manager
package_install \ package_install \
nodejs `# Javascript on servers!` \ nodejs \
npm `# node package manager` \ npm \
yarn `# better node package manager` \ yarn
# 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"
} }
setup_obs() { setup_obs() {
# obs-plugin-input-overlay-bin: show inputs in OBS
# obs-studio-browser: screen recording and streaming with browser overlay support
package_install \ package_install \
obs-plugin-input-overlay-bin `# show inputs in OBS` \ obs-plugin-input-overlay-bin \
obs-studio-browser `# screen recording and streaming with browser overlay support` \ obs-studio-browser
} }
setup_osu() { setup_osu() {
# osu! stable
# todo: enable multilib # todo: enable multilib
# todo: change to lazer when it can give pp
package_install \ package_install \
osu `# osu stable` \ osu
} }
@ -548,65 +595,72 @@ setup_pamac() {
} }
setup_pavucontrol() { setup_pavucontrol() {
# PulseAudio settings I use for redirecting desktop audio to microphone input
package_install \ package_install \
pavucontrol `# PulseAudio settings I use for redirecting desktop audio to microphone input` \ pavucontrol
} }
setup_pip() { setup_pip() {
# package installer for python
package_install \ package_install \
python-pip `# package installer for python` \ python-pip
} }
setup_piper() { setup_piper() {
# gaming mouse settings GUI
package_install \ package_install \
piper `# gaming mouse settings GUI` \ piper
} }
setup_rust() { setup_rust() {
package_install \ package_install \
rust \ rust \
rustup \ rustup
rustup install stable rustup install stable
} }
setup_shfmt() { setup_shfmt() {
package_install \ package_install \
shfmt \ shfmt
} }
setup_steam() { setup_steam() {
package_install \ package_install \
steam \ steam
} }
setup_timeshift() { setup_timeshift() {
# backup and restore system
package_install \ package_install \
timeshift `# backup and restore system` \ timeshift
} }
setup_torrential() { setup_torrential() {
# torrent client
package_install \ package_install \
torrential `torrent client` \ torrential
} }
setup_unity() { setup_unity() {
# game engine
package_install \ package_install \
unityhub `# game engine` \ unityhub
POST_INSTALL+=("Change editors location") POST_INSTALL+=("Change editors location")
} }
setup_vim() { setup_vim() {
# vim plugin manager
package_install \ package_install \
vim-plug `# vim plugin manager` \ vim-plug
cp .vimrc ~ cp .vimrc ~
} }
@ -617,7 +671,7 @@ setup_virtualbox() {
package_install \ package_install \
virtualbox \ virtualbox \
virtualbox-host-modules-arch \ virtualbox-host-modules-arch \
virtualbox-ext-oracle \ virtualbox-ext-oracle
sudo systemctl enable systemd-modules-load sudo systemctl enable systemd-modules-load
sudo systemctl start systemd-modules-load sudo systemctl start systemd-modules-load
@ -625,24 +679,33 @@ setup_virtualbox() {
} }
setup_vlc() { setup_vlc() {
# media player compatible with obs-studio-browser
package_install \ package_install \
vlc-luajit `# media player compatible with obs-studio-browser` \ vlc-luajit
} }
setup_vscode() { setup_vscode() {
# proprietary vscode build
package_install \ package_install \
visual-studio-code-bin `# proprietary vscode build` \ visual-studio-code-bin
POST_INSTALL+=("vscode: log in") POST_INSTALL+=("vscode: log in")
} }
setup_wine() { setup_wine() {
# wine: compatibility layer
# wine-gecko: internet explorer for wine
# wine-mono: .NET runtime for wine
# winetricks: wine helper script
package_install \ package_install \
wine `# compatibility layer` \ wine \
wine-gecko `# internet explorer for wine` \ wine-gecko \
wine-mono `# .NET runtime for wine` \ wine-mono \
winetricks `# wine helper script` \ winetricks
# WINEARCH=win32 WINEPREFIX=~/.win32/ winecfg # WINEARCH=win32 WINEPREFIX=~/.win32/ winecfg
# winetricks allfonts # winetricks allfonts
@ -650,28 +713,34 @@ setup_wine() {
} }
setup_wireshark() { setup_wireshark() {
# network protocol analyzer with gtk frontend
package_install \ package_install \
wireshark-gtk2 `# network protocol analyzer with gtk frontend` \ wireshark-gtk2
sudo usermod -a -G wireshark $USER sudo usermod -a -G wireshark $USER
POST_INSTALL+=("wireshark: reboot") POST_INSTALL+=("wireshark: reboot")
} }
setup_onlyoffice() { setup_onlyoffice() {
# MS office but free
package_install \ package_install \
onlyoffice-bin `# MS office but free` \ onlyoffice-bin
} }
setup_zoom() { setup_zoom() {
# gay video conference app
package_install \ package_install \
zoom `# gay video conference app` \ zoom
} }
setup_zsh() { setup_zsh() {
package_install \ package_install \
zsh \ zsh
if [[ ! -d /home/pomp/.oh-my-zsh ]]; then if [[ ! -d /home/pomp/.oh-my-zsh ]]; then
# install oh my zsh # install oh my zsh
@ -689,19 +758,18 @@ setup_zsh() {
fi fi
} }
# #################### [ ETC ] #################### # #################### [ ETC ] ####################
backup() { backup() {
TIMESTAMP=$(date +%s) TIMESTAMP=$(date +%s)
# backup dconf configuration # backup dconf configuration
dconf dump / > "$SCRIPT_DIR/dconf$TIMESTAMP.conf" dconf dump / >"$SCRIPT_DIR/dconf$TIMESTAMP.conf"
# make a home directory backup # make a home directory backup
rsync -a --info=progress2 --perms /home/pomp "$DATA_PATH/backup$TIMESTAMP" rsync -a --info=progress2 --perms /home/pomp "$DATA_PATH/backup$TIMESTAMP"
# create timeshift backup # create timeshift backup
if ! command -v timeshift &> /dev/null; then if ! command -v timeshift &>/dev/null; then
error "failed to create timeshift backup. Timeshift command not found." error "failed to create timeshift backup. Timeshift command not found."
else else
sudo timeshift --create --comments "auto created by developomp setup script ($TIMESTAMP)" sudo timeshift --create --comments "auto created by developomp setup script ($TIMESTAMP)"
@ -721,7 +789,6 @@ setup_local() {
fi fi
} }
# #################### [ TEST ] #################### # #################### [ TEST ] ####################
# Tests if script is ready to be executed # Tests if script is ready to be executed
@ -732,11 +799,10 @@ if [[ ! $EUID -ne 0 ]]; then
fi fi
# check internet connection # check internet connection
if ! ping -c 1 archlinux.org &> /dev/null; then if ! ping -c 1 archlinux.org &>/dev/null; then
error "You are not connected to the internet" error "You are not connected to the internet"
fi fi
# #################### [ START ] #################### # #################### [ START ] ####################
# move to script directory (repo root) # move to script directory (repo root)
@ -761,7 +827,6 @@ if [[ $REPLY =~ ^[^Yy]$ ]]; then
fi fi
echo echo
# #################### [ MAIN ] #################### # #################### [ MAIN ] ####################
setup_essentials setup_essentials
@ -820,61 +885,59 @@ choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
clear clear
for choice in $choices; do for choice in $choices; do
case "$choice" in case "$choice" in
"4k_video_downloader") setup_4kvideodownloader;; "4k_video_downloader") setup_4kvideodownloader ;;
"blender") setup_blender;; "blender") setup_blender ;;
"brave") setup_brave;; "brave") setup_brave ;;
"backup") backup;; "backup") backup ;;
"cpu_undervolting") setup_cpu_undervolting;; "cpu_undervolting") setup_cpu_undervolting ;;
"discord") setup_discord;; "discord") setup_discord ;;
"dotnet") setup_dotnet;; "dotnet") setup_dotnet ;;
"fonts") setup_fonts;; "fonts") setup_fonts ;;
"geogebra") setup_geogebra;; "geogebra") setup_geogebra ;;
"gimp") setup_gimp;; "gimp") setup_gimp ;;
"git") setuo_git;; "git") setuo_git ;;
"gnome") setup_gnome;; "gnome") setup_gnome ;;
"gnome_apps") setup_gnome_apps;; "gnome_apps") setup_gnome_apps ;;
"gnome_extensions") setup_gnome_extensions;; "gnome_extensions") setup_gnome_extensions ;;
"go") setup_go;; "go") setup_go ;;
"godot") setup_godot;; "godot") setup_godot ;;
"gsmartcontrol") setup_gsmartcontrol;; "gsmartcontrol") setup_gsmartcontrol ;;
"inkscape") setup_inkscape;; "inkscape") setup_inkscape ;;
"kdenlive") setup_kdenlive;; "kdenlive") setup_kdenlive ;;
"keyboard") setup_keyboard;; "keyboard") setup_keyboard ;;
"obs") setup_obs;; "obs") setup_obs ;;
"osu") setup_osu;; "osu") setup_osu ;;
"marktext") setup_marktext;; "marktext") setup_marktext ;;
"middleclickpaste") setup_middleclickpaste;; "middleclickpaste") setup_middleclickpaste ;;
"mystiq") setup_mystiq;; "mystiq") setup_mystiq ;;
"node") setup_node;; "node") setup_node ;;
"pamac") setup_pamac;; "pamac") setup_pamac ;;
"pavucontrol") setup_pavucontrol;; "pavucontrol") setup_pavucontrol ;;
"pip") setup_pip;; "pip") setup_pip ;;
"piper") setup_piper;; "piper") setup_piper ;;
"rust") setup_rust;; "rust") setup_rust ;;
"shfmt") setup_shfmt;; "shfmt") setup_shfmt ;;
"steam") setup_steam;; "steam") setup_steam ;;
"timeshift") setup_timeshift;; "timeshift") setup_timeshift ;;
"torrential") setup_torrential;; "torrential") setup_torrential ;;
"unity") setup_unity;; "unity") setup_unity ;;
"vim") setup_vim;; "vim") setup_vim ;;
"virtualbox") setup_virtualbox;; "virtualbox") setup_virtualbox ;;
"vlc") setup_vlc;; "vlc") setup_vlc ;;
"vscode") setup_vscode;; "vscode") setup_vscode ;;
"wine") setup_wine;; "wine") setup_wine ;;
"wireshark") setup_wireshark;; "wireshark") setup_wireshark ;;
"onlyoffice") setup_onlyoffice;; "onlyoffice") setup_onlyoffice ;;
"zoom") setup_zoom;; "zoom") setup_zoom ;;
"zsh") setup_zsh;; "zsh") setup_zsh ;;
esac esac
done done
# #################### [ CLEANUP ] #################### # #################### [ CLEANUP ] ####################
# remove temporary directory # remove temporary directory
rm -rf "$SCRIPT_DIR/tmp" rm -rf "$SCRIPT_DIR/tmp"
# #################### [ DONE ] #################### # #################### [ DONE ] ####################
# print some info after installation # print some info after installation