111 lines
3.8 KiB
Bash
Executable file
111 lines
3.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
############# Packages to install ########################################
|
|
|
|
macos_homebrew_essentials="python3 vim-nox tmux nano zsh git autossh mosh sshuttle lynx npm tidy mcfly ack ncdu shfmt up htop"
|
|
macos_homebrew_other_apps="calibre"
|
|
raspberrypi_essentials="python3 python3-pip vim-nox python3-venv tmux nano zsh git htop ncdu autossh mosh sshuttle fail2ban avahi-daemon ufw lynx npm ssmtp apticron tidy nmon software-properties-common ack restic unrar cmake"
|
|
raspberrypi_printer="cups printer-driver-gutenprint"
|
|
raspberrypi_camera="python3-opencv"
|
|
|
|
############# Packages install functions #################################
|
|
|
|
install_python_linters() {
|
|
pip3 install requests bs4 prospector black isort --break-system-packages
|
|
}
|
|
|
|
install_npm_linters() {
|
|
sudo npm install -g jsonlint
|
|
sudo npm install -g fixjson
|
|
}
|
|
|
|
############# MacOS exclusive commands ###################################
|
|
|
|
# Install homebrew
|
|
system_type=$(uname -s)
|
|
|
|
if [ "$system_type" = "Darwin" ]; then
|
|
|
|
# install homebrew if it's missing
|
|
if ! command -v brew >/dev/null 2>&1; then
|
|
echo "Install homebrew? (y/n, default=y)"
|
|
read -r install_homebrew
|
|
install_homebrew=${install_homebrew:-y}
|
|
if echo "$install_homebrew" | grep -qi '^[yj]$'; then
|
|
echo "Installing homebrew"
|
|
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
############# Raspberrypi exclusive commands #############################
|
|
|
|
if [ "$system_type" = "Linux" ]; then
|
|
install_this_now=""
|
|
|
|
echo "Install the most important packages ($raspberrypi_essentials)? (y/n, default=n)"
|
|
read -r install_raspberrypi_essentials
|
|
install_raspberrypi_essentials=${install_raspberrypi_essentials:-n}
|
|
if echo "$install_raspberrypi_essentials" | grep -qi '^[yj]$'; then
|
|
install_this_now="$install_this_now $raspberrypi_essentials"
|
|
fi
|
|
|
|
echo "Install the packages for printing? (y/n, default=n)"
|
|
read -r install_raspberrypi_printer
|
|
install_raspberrypi_printer=${install_raspberrypi_printer:-n}
|
|
if echo "$install_raspberrypi_printer" | grep -qi '^[yj]$'; then
|
|
install_this_now="$install_this_now $raspberrypi_printer"
|
|
fi
|
|
|
|
echo "Install the packages for the camera? (y/n, default=n)"
|
|
read -r install_raspberrypi_camera
|
|
install_raspberrypi_camera=${install_raspberrypi_camera:-n}
|
|
if echo "$install_raspberrypi_camera" | grep -qi '^[yj]$'; then
|
|
install_this_now="$install_this_now $raspberrypi_camera"
|
|
fi
|
|
|
|
if [ -n "$install_this_now" ]; then
|
|
echo "Packages will be installed now!"
|
|
sudo apt update
|
|
for i in $install_this_now; do
|
|
sudo apt-get install -y $i
|
|
done
|
|
fi
|
|
fi
|
|
|
|
if command -v ufw >/dev/null 2>&1; then
|
|
echo "Enable the firewall (ufw with ssh allowed)? (y/n, default=n)"
|
|
read -r enable_ufw
|
|
enable_ufw=${enable_ufw:-n}
|
|
if echo "$enable_ufw" | grep -qi '^[yj]$'; then
|
|
ufw allow ssh
|
|
ufw enable
|
|
fi
|
|
fi
|
|
|
|
############# Commands for both ##########################################
|
|
|
|
if command -v /bin/zsh >/dev/null 2>&1; then
|
|
echo "Set zsh as default shell? (y/n, default=n)"
|
|
read -r set_default_shell
|
|
set_default_shell=${set_default_shell:-n}
|
|
if echo "$set_default_shell" | grep -qi '^[yj]$'; then
|
|
chsh -s /bin/zsh
|
|
fi
|
|
fi
|
|
|
|
echo "Install all linters for vim? (y/n, default=n)"
|
|
read -r install_linters
|
|
install_linters=${install_linters:-n}
|
|
if echo "$install_linters" | grep -qi '^[yj]$'; then
|
|
install_npm_linters
|
|
install_python_linters
|
|
fi
|
|
|
|
echo "Install the vim plugins now? (y/n, default=n)"
|
|
read -r install_vim_plugins
|
|
install_vim_plugins=${install_vim_plugins:-n}
|
|
if echo "$install_vim_plugins" | grep -qi '^[yj]$'; then
|
|
vim +'PlugInstall --sync' +qa
|
|
echo "Done!"
|
|
fi
|