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

349
setup.sh
View file

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