-
Andri Joos authoredcd51b761
install_functions.sh 9.67 KiB
source installer_vars.sh
apt_update_cmd="sudo apt update"
apt_install_cmd="sudo apt install -y"
snap_install_cmd="sudo snap install"
snap_classic_arg="--classic"
snap_channel_arg="--channel"
snap_dangerous_arg="--dangerous"
snap_alias_cmd="sudo snap alias"
flatpak_install_cmd="flatpak install --user -y"
flathub_repo="flathub"
mkdir_cmd="mkdir -p"
gtk_launch_cmd="gtk-launch"
flatpak_run_cmd="flatpak run"
add_user_to_group_cmd="sudo usermod -aG"
command_exists() {
cmd=$1
if command -v $cmd &> /dev/null
then
true
else
false
fi
}
update_upgrade() {
$apt_update_cmd && sudo apt upgrade -y
sudo snap refresh
if command_exists flatpak
then
sudo flatpak update -y
else
echo "flatpak does not exist; skipping update"
fi
}
flatpak_add_repo() {
repo_name=$1
repo_url=$2
flatpak remote-add --user --if-not-exists $repo_name $repo_url
}
install_flatpak() {
$apt_install_cmd flatpak
flatpak_add_repo $flathub_repo https://dl.flathub.org/repo/flathub.flatpakrepo
}
install_flatpak_app() {
app_name=$1
flatpak_repo="flathub"
install_flatpak
$flatpak_install_cmd $flatpak_repo $app_name
}
make_application_entry() {
file="$applications_path/$1.desktop"
app_name=$2
app_exec=$3
app_icon=$4
ensure_dir $applications_path
printf "[Desktop Entry]\nName=$2\nExec=$3\nIcon=$4\nType=Application" > $file
}
make_autostart_entry() {
file="$autostart_path/$1.desktop"
app_name=$2
app_exec=$3
read -p "Create autostart entry? (y/n): " creation_answer
if [ $creation_answer = "y" ]
then
ensure_dir $autostart_path
printf "[Desktop Entry]\nName=$2\nExec=$3\nType=Application" > $file
fi
}
install_firefox() {
$snap_install_cmd firefox
make_autostart_entry firefox Firefox firefox
}
install_vs_code() {
$snap_install_cmd code $snap_classic_arg
make_autostart_entry vscode "Visual Studio Code" "code" # flatpak not possible due to sandboxing, docker forwarding not really working, tries to mount /run/... path, results in error
}
install_spotify() {
flatpak_id="com.spotify.Client"
install_flatpak_app $flatpak_id
make_autostart_entry spotify Spotify "$flatpak_run_cmd $flatpak_id"
}
install_gimp() {
install_flatpak_app org.gimp.GIMP
}
install_curl() {
$apt_install_cmd curl
}
install_kdiff3() {
$apt_install_cmd kdiff3
}
install_git() {
$apt_install_cmd git
}
install_mono_complete() {
$apt_install_cmd mono-complete
}
install_virtualbox() {
$apt_install_cmd virtualbox
$add_user_to_group_cmd vboxusers $username
}
install_vlc() {
$apt_install_cmd vlc
}
install_docker() {
$apt_install_cmd docker.io
$add_user_to_group_cmd docker $username
}
install_kubectl() {
$snap_install_cmd kubectl $snap_classic_arg
}
install_net_tools() {
$apt_install_cmd net-tools
}
install_k3d() {
install_curl
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
}
install_git_extensions() { #git extensions crashes # maybe newer versions work (.net 6)
install_mono_complete
install_curl
gitext_path="$portable_programs_path/GitExtensions"
gitext_zip_path="$downloads_path/gitextensions.zip"
gitext_exe_path="$gitext_path/GitExtensions.exe"
gitext_logo_path="$gitext_path/git-extensions-logo-final-256.ico"
mkdir -p $gitext_path
firefox --new-window https://github.com/gitextensions/gitextensions/releases
read -p "latest mono release (e.g. 2.51.05): " git_extensions_release
curl -L https://github.com/gitextensions/gitextensions/releases/download/v$git_extensions_release/GitExtensions-$git_extensions_release-Mono.zip -o $gitext_zip_path
unzip -o $gitext_zip_path -d $portable_programs_path
rm "$gitext_path/Plugins/Bitbucket.dll"
rm $gitext_zip_path
# echo "alias gitext='mono $gitext_path/GitExtensions.exe'" >> $aliases_path
make_application_entry gitextensions GitExtensions "mono $gitext_exe_path" $gitext_logo_path
make_autostart_entry gitextensions GitExtensions "$gtk_launch_cmd gitextensions"
}
install_gridsite-clients() {
$apt_install_cmd gridsite-clients
}
install_flameshot() {
# Due to a bug in flameshot, follow those steps: open flameshot launcher, take screenshot from tray icon, allow permissions
flatpak_id="org.flameshot.Flameshot"
install_flatpak_app $flatpak_id
make_autostart_entry flameshot Flameshot "$flatpak_run_cmd $flatpak_id"
}
install_intellij_idea() {
install_flatpak_app com.jetbrains.IntelliJ-IDEA-Community
}
install_linssid() {
$apt_install_cmd linssid
}
install_docker_ce() {
install_curl
docker_source_list="/etc/apt/sources.list.d/docker.list"
docker_keyring_file="/usr/share/keyrings/docker.gpg"
docker_apt_repo="https://download.docker.com/linux/ubuntu"
os=$(lsb_release -cs)
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o $docker_keyring_file
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee $docker_keyring_file > /dev/null # if already in gpg format
echo "deb [arch=amd64 signed-by=$docker_keyring_file] $docker_apt_repo $os stable" | sudo tee $docker_source_list > /dev/null
sudo apt update
! sudo apt install -y docker-ce # needed because sometimes docker restarts to fast and docker daemon will be up and running after restart of pc
sudo dpkg --configure -a
}
install_dl_driver() {
install_curl
display_link_keyring="$downloads_path/synaptics-repository-keyring.deb"
curl https://www.synaptics.com/sites/default/files/Ubuntu/pool/stable/main/all/synaptics-repository-keyring.deb -o $display_link_keyring
sudo apt install -y $display_link_keyring
sudo rm $display_link_keyring
sudo apt update
sudo apt install -y displaylink-driver
}
install_obsidian() {
flatpak_id="md.obsidian.Obsidian"
install_flatpak_app $flatpak_id
make_autostart_entry obsidian Obsidian "$flatpak_run_cmd $flatpak_id"
}
install_staruml() {
install_curl
staruml_file="$downloads_path/staruml.deb"
firefox --new-window https://staruml.io/download
read -p "staruml major release (e.g. 5): " staruml_major_release
read -p "staruml minor release (e.g. 0.2): " staruml_minor_release
curl https://staruml.io/download/releases-v$staruml_major_release/StarUML_${staruml_major_release}.${staruml_minor_release}_amd64.deb -o $staruml_file
$apt_install_cmd $staruml_file
rm $staruml_file
}
install_node() {
install_curl
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
export NVM_DIR="$HOME/.nvm"
\. "$NVM_DIR/nvm.sh"
nvm install 20
}
install_webstorm() {
install_flatpak_app com.jetbrains.WebStorm
}
install_dotnet() {
# install repo
packages_installer="$downloads_path/packages-microsoft-prod.deb"
wget https://packages.microsoft.com/config/ubuntu/$ubuntu_release/packages-microsoft-prod.deb -O $packages_installer
sudo dpkg -i $packages_installer
rm $packages_installer
sudo cp dotnet_apt_preferences/dotnet /etc/apt/preferences.d/dotnet
sudo cp dotnet_apt_preferences/aspnet /etc/apt/preferences.d/aspnet
sudo apt update
read -p "dotnet release (e.g. 6.0): " dotnet_release
sudo apt-get install -y dotnet-sdk-$dotnet_release
}
install_ilspy() {
install_curl
ilspy_zip="$downloads_path/ilspy.zip"
ilspy_dir="$portable_programs_path/ILSpy"
mkdir -p $ilspy_dir
curl -L https://github.com/icsharpcode/AvaloniaILSpy/releases/latest/download/Linux.x64.Release.zip -o $ilspy_zip
unzip $ilspy_zip -d $ilspy_dir
rm $ilspy_zip
echo "alias ilspy='$ilspy_dir/ILSpy'" >> $aliases_path
}
install_android_studio() {
install_flatpak_app com.google.AndroidStudio
}
install_pip() {
$apt_install_cmd python3-pip
}
install_virtualenv() {
$apt_install_cmd virtualenv
}
install_rider() {
$snap_install_cmd rider $snap_classic_arg
}
install_nextcloud_client() {
flatpak_id="com.nextcloud.desktopclient.nextcloud"
install_flatpak_app $flatpak_id
make_autostart_entry nextcloudclient "Nextcloud Client" "$flatpak_run_cmd $flatpak_id"
}
install_nano() {
$apt_install_cmd nano
}
install_element_desktop() {
element_keyring_file="/usr/share/keyrings/element-io-archive-keyring.gpg"
$apt_install_cmd wget apt-transport-https
sudo wget -O $element_keyring_file https://packages.element.io/debian/element-io-archive-keyring.gpg
echo "deb [signed-by=$element_keyring_file] https://packages.element.io/debian/ default main" | sudo tee /etc/apt/sources.list.d/element-io.list
sudo apt update
$apt_install_cmd element-desktop
}
install_dconf_editor() {
$apt_install_cmd dconf-editor
}
install_openssh_server() {
$apt_install_cmd openssh-server
}
install_openconnect() {
$apt_install_cmd openconnect network-manager-openconnect network-manager-openconnect-gnome
}
install_protonvpn() {
firefox --new-window https://protonvpn.com/support/official-linux-vpn-ubuntu
read -p "latest repo version (e.g. 1.0.4) " proton_repo_version
repo_installer_file="$downloads_path/proton_repo.deb"
wget https://repo.protonvpn.com/debian/dists/stable/main/binary-all/protonvpn-stable-release_${proton_repo_version}_all.deb -O $repo_installer_file
sudo dpkg -i $repo_installer_file
$apt_update_cmd
$apt_install_cmd proton-vpn-gnome-desktop
make_autostart_entry proton-vpn "proton vpn" "protonvpn-app"
}
install_flatseal() {
flatpak_id="com.github.tchx84.Flatseal"
install_flatpak_app $flatpak_id
}
install_wireguard() {
$apt_install_cmd wireguard
}
install_remmina() {
install_flatpak_app org.remmina.Remmina
}