1
0
Fork 0

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:
Kim, Jimin 2021-10-10 21:39:49 +09:00
parent 79c22877b1
commit 191b524f7e

342
setup.sh
View file

@ -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
} }
@ -95,25 +102,25 @@ setup_essentials() {
# 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_alacarte() { setup_alacarte() {
package_install \ package_install \
alacarte \ alacarte \
} }
setup_blender() { setup_blender() {
package_install \ package_install \
blender \ blender \
} }
setup_brave() { setup_brave() {
package_install \ package_install \
brave-beta-browser \ brave-beta-browser \
# settings: DNS https cloudflare # settings: DNS https cloudflare
@ -127,8 +134,8 @@ setup_conky() {
# enable on startup # enable on startup
# copy conky files # copy conky files
package_install \ package_install \
conky \ conky \
vnstat `# network traffic statistics` \ vnstat `# network traffic statistics` \
sudo systemctl enable vnstat sudo systemctl enable vnstat
@ -139,8 +146,8 @@ setup_cpu_undervolting() {
# Undervolting for intel CPU # Undervolting for intel CPU
# 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
@ -164,30 +171,24 @@ 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() {
# assumes that plugins are located in ~/.config/BetterDiscord/plugins # assumes that plugins are located in ~/.config/BetterDiscord/plugins
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
@ -298,34 +299,53 @@ setup_fonts() {
# cleanup # cleanup
rm -rf $fonts_directory rm -rf $fonts_directory
package_install \ package_install \
noto-fonts-emoji \ noto-fonts-emoji \
nerd-fonts-noto-sans-mono `# Terminal font` \ nerd-fonts-noto-sans-mono `# Terminal font` \
} }
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 \ package_install \
baobab `# Disk usage analysis` \ gwe `# nvidia GPU overclocking https://gitlab.com/leinardi/gwe` \
dconf-editor `# GUI for dconf` \ 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 \
baobab `# Disk usage analysis` \
gpick `# color picker` \
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` \
gnome-font-viewer `# Managing fonts` \ gnome-font-viewer `# Managing fonts` \
gnome-logs `# GUI for system journal` \ gnome-logs `# GUI for system journal` \
gnome-usage `# System resource statistics` \ gnome-usage `# System resource statistics` \
gnome-terminal-transparency `# Transparent gnome terminal` \ gnome-terminal-transparency `# Transparent gnome terminal` \
gnome-shell-extension-installer `# Installation of gnome extensions from command line` \ gnome-shell-extension-installer `# Installation of gnome extensions from command line` \
# install gnome extensions # install gnome extensions
@ -350,72 +370,49 @@ 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() {
package_install \ package_install \
go \ 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,90 +420,78 @@ 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` \
} }
setup_node() { 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"
} }
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,125 +501,127 @@ 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")
} }
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")