Last active
December 12, 2024 12:05
-
-
Save RBFraphael/cad9c5b4f94ab78f88ea0a7c429f9aa7 to your computer and use it in GitHub Desktop.
Post install script for Linux Mint 22
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
CURRENT_USER=$1 | |
HOME="/home/$CURRENT_USER" | |
# Change URLs below with updated ones | |
DEB_DOCKER="https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb" | |
DEB_DRAWIO="https://github.com/jgraph/drawio-desktop/releases/download/v24.7.17/drawio-amd64-24.7.17.deb" | |
DEB_GOOGLE_CHROME="https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb" | |
DEB_HYPER="https://releases.hyper.is/download/deb" | |
DEB_MICROSOFT_EDGE="https://go.microsoft.com/fwlink?linkid=2149051&brand=M102" | |
DEB_VBOX="https://download.virtualbox.org/virtualbox/7.1.4/virtualbox-7.1_7.1.4-165100~Ubuntu~noble_amd64.deb" | |
DEB_VSCODE="https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" | |
DEB_ZOOM="https://zoom.us/client/6.2.6.2503/zoom_amd64.deb" | |
ANDROID_STUDIO_PACKAGE="https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.1.2.12/android-studio-2024.1.2.12-linux.tar.gz" | |
GO_PACKAGE="https://go.dev/dl/go1.23.2.linux-amd64.tar.gz" | |
MICROSOFT_REPO_PACKAGE="https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb" | |
PHPMYADMIN_PACKAGE="https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-english.zip" | |
VBOX_EXT_PACK="https://download.virtualbox.org/virtualbox/7.1.4/Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack" | |
C_YELLOW=`tput setaf 220` | |
C_RESET=`tput init` | |
check_root_user() { | |
if [ "$(id -u)" != 0 ]; then | |
echo 'Please run the script as root!' | |
echo 'We need to do administrative tasks' | |
exit | |
fi | |
} | |
check_user_arg() { | |
if [ -z "$CURRENT_USER" ]; then | |
echo 'User not specified.' | |
echo 'Specify the user by typing "ubuntu-post-install.sh <username>"' | |
exit | |
fi | |
} | |
check_home() { | |
if [ -z "$HOME" ]; then | |
echo 'Cannot set \$HOME variable.' | |
exit | |
fi | |
} | |
show_message() { | |
echo -e "${C_YELLOW}\n\ | |
----------------------------------------------- \n\ | |
## $1 \n\ | |
----------------------------------------------- \n\ | |
${C_RESET}" | |
} | |
update_system() { | |
apt update | |
apt upgrade -y | |
apt dist-upgrade -y | |
} | |
cleanup() { | |
apt autoremove -y | |
} | |
install_gnome_software() { | |
apt install gnome-software gnome-software-common gnome-software-plugin-flatpak -y | |
} | |
install_required_packages() { | |
apt install ca-certificates git gnupg curl gcc make perl build-essential -y | |
} | |
add_repositories() { | |
add-apt-repository ppa:ondrej/apache2 -y | |
add-apt-repository ppa:ondrej/php -y | |
add-apt-repository ppa:libreoffice/ppa -y | |
add-apt-repository ppa:papirus/papirus -y | |
add-apt-repository ppa:xtradeb/apps -y | |
wget -qO - https://hub.unity3d.com/linux/keys/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/Unity_Technologies_ApS.gpg > /dev/null | |
sh -c 'echo "deb [signedby=/etc/apt/trusted.gpg.d/Unity_Technologies_ApS.gpg] https://hub.unity3d.com/linux/repos/deb stable main" > /etc/apt/sources.list.d/unityhub.list' | |
install -m 0755 -d /etc/apt/keyrings | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc | |
chmod a+r /etc/apt/keyrings/docker.asc | |
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$UBUNTU_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null | |
curl -fsSL https://keys.anydesk.com/repos/DEB-GPG-KEY -o /etc/apt/keyrings/anydesk.asc | |
chmod a+r /etc/apt/keyrings/anydesk.asc | |
echo "deb [signed-by=/etc/apt/keyrings/anydesk.asc] http://deb.anydesk.com/ all main" | tee /etc/apt/sources.list.d/anydesk-stable.list > /dev/null | |
curl -sSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null | |
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | tee /etc/apt/sources.list.d/ngrok.list | |
} | |
install_web_server() { | |
apt install apache2 libapache2-mod-fcgid \ | |
php5.6-fpm php5.6-bz2 php5.6-curl php5.6-gd php5.6-geoip php5.6-http php5.6-imap php5.6-intl php5.6-json php5.6-ldap php5.6-mbstring php5.6-mcrypt php5.6-memcache php5.6-memcached php5.6-mongodb php5.6-mysql php5.6-pgsql php5.6-raphf php5.6-redis php5.6-smbclient php5.6-soap php5.6-sqlite3 php5.6-uploadprogress php5.6-xdebug php5.6-xml php5.6-yaml php5.6-zip \ | |
php7.0-fpm php7.0-bz2 php7.0-curl php7.0-gd php7.0-geoip php7.0-http php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-memcache php7.0-memcached php7.0-mongodb php7.0-mysql php7.0-pgsql php7.0-raphf php7.0-redis php7.0-smbclient php7.0-soap php7.0-sqlite3 php7.0-uploadprogress php7.0-uuid php7.0-xdebug php7.0-xml php7.0-yaml php7.0-zip \ | |
php7.2-fpm php7.2-bz2 php7.2-curl php7.2-gd php7.2-geoip php7.2-http php7.2-imap php7.2-intl php7.2-json php7.2-ldap php7.2-mbstring php7.2-mcrypt php7.2-memcache php7.2-memcached php7.2-mongodb php7.2-mysql php7.2-pgsql php7.2-raphf php7.2-redis php7.2-smbclient php7.2-soap php7.2-sqlite3 php7.2-uploadprogress php7.2-uuid php7.2-xdebug php7.2-xml php7.2-yaml php7.2-zip \ | |
php7.4-fpm php7.4-bz2 php7.4-curl php7.4-gd php7.4-geoip php7.4-http php7.4-imap php7.4-intl php7.4-json php7.4-ldap php7.4-mbstring php7.4-mcrypt php7.4-memcache php7.4-memcached php7.4-mongodb php7.4-mysql php7.4-pgsql php7.4-raphf php7.4-redis php7.4-smbclient php7.4-soap php7.4-sqlite3 php7.4-uploadprogress php7.4-uuid php7.4-xdebug php7.4-xml php7.4-yaml php7.4-zip \ | |
php8.0-fpm php8.0-bz2 php8.0-curl php8.0-gd php8.0-http php8.0-imap php8.0-intl php8.0-ldap php8.0-mbstring php8.0-mcrypt php8.0-memcache php8.0-memcached php8.0-mongodb php8.0-mysql php8.0-pgsql php8.0-raphf php8.0-redis php8.0-smbclient php8.0-soap php8.0-sqlite3 php8.0-uploadprogress php8.0-uuid php8.0-xdebug php8.0-xml php8.0-yaml php8.0-zip \ | |
php8.2-fpm php8.2-bz2 php8.2-curl php8.2-gd php8.2-http php8.2-imap php8.2-intl php8.2-ldap php8.2-mbstring php8.2-mcrypt php8.2-memcache php8.2-memcached php8.2-mongodb php8.2-mysql php8.2-pgsql php8.2-raphf php8.2-redis php8.2-smbclient php8.2-soap php8.2-sqlite3 php8.2-uploadprogress php8.2-uuid php8.2-xdebug php8.2-xml php8.2-yaml php8.2-zip \ | |
php8.3-fpm php8.3-bz2 php8.3-curl php8.3-gd php8.3-http php8.3-imap php8.3-intl php8.3-ldap php8.3-mbstring php8.3-mcrypt php8.3-memcache php8.3-memcached php8.3-mongodb php8.3-mysql php8.3-pgsql php8.3-raphf php8.3-redis php8.3-smbclient php8.3-soap php8.3-sqlite3 php8.3-uploadprogress php8.3-uuid php8.3-xdebug php8.3-xml php8.3-yaml php8.3-zip \ | |
php8.4-fpm php8.4-bz2 php8.4-curl php8.4-gd php8.4-http php8.4-imap php8.4-intl php8.4-ldap php8.4-mbstring php8.4-mcrypt php8.4-memcache php8.4-memcached php8.4-mongodb php8.4-mysql php8.4-pgsql php8.4-raphf php8.4-redis php8.4-soap php8.4-sqlite3 php8.4-uploadprogress php8.4-uuid php8.4-xdebug php8.4-xml php8.4-yaml php8.4-zip \ | |
mariadb-server -y | |
a2dismod php* | |
a2enmod alias vhost_alias headers rewrite ssl fcgid proxy_fcgi | |
a2enconf php5.6-fpm php7.0-fpm php7.2-fpm php7.4-fpm php8.0-fpm php8.2-fpm php8.3-fpm php8.4-fpm | |
echo -e "\ | |
export PHP56=\"proxy:unix:/run/php/php5.6-fpm.sock|fcgi://localhost\" \n\ | |
export PHP70=\"proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost\" \n\ | |
export PHP72=\"proxy:unix:/run/php/php7.2-fpm.sock|fcgi://localhost\" \n\ | |
export PHP74=\"proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost\" \n\ | |
export PHP80=\"proxy:unix:/run/php/php8.0-fpm.sock|fcgi://localhost\" \n\ | |
export PHP82=\"proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost\" \n\ | |
export PHP83=\"proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost\" \n\ | |
export PHP84=\"proxy:unix:/run/php/php8.4-fpm.sock|fcgi://localhost\" \n\ | |
" | tee -a /etc/apache2/envvars > /dev/null | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/apache2/envvars | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/5.6/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/7.0/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/7.2/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/7.4/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/8.0/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/8.2/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/8.3/fpm/pool.d/www.conf | |
sed -i "s/www-data/$CURRENT_USER/g" /etc/php/8.4/fpm/pool.d/www.conf | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/5.6/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/5.6/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/5.6/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/7.0/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/7.0/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/7.0/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/7.2/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/7.2/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/7.2/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/7.4/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/7.4/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/7.4/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/8.0/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/8.0/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/8.0/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/8.2/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/8.2/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/8.2/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/8.3/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/8.3/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/8.3/fpm/php.ini | |
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 10G/g" /etc/php/8.4/fpm/php.ini | |
sed -i "s/post_max_size = 8M/post_max_size = 10G/g" /etc/php/8.4/fpm/php.ini | |
sed -i "s/max_execution_time = 30/max_execution_time = 900/g" /etc/php/8.4/fpm/php.ini | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP83} | |
</FilesMatch> | |
AccessFileName .htaccess .phpv | |
<Directory $HOME/Web> \n\ | |
Options Indexes FollowSymLinks \n\ | |
AllowOverride All \n\ | |
Require all granted \n\ | |
</Directory> \n\ | |
<VirtualHost *:80> \n\ | |
ServerName local.host \n\ | |
ServerAlias localhost \n\ | |
DocumentRoot $HOME/Web \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:80> \n\ | |
ServerAlias *.*.*.local.host \n\ | |
ServerAlias *.*.*.localhost \n\ | |
VirtualDocumentRoot $HOME/Web/%3/%2/%1 \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:80> \n\ | |
ServerAlias *.*.local.host \n\ | |
ServerAlias *.*.localhost \n\ | |
VirtualDocumentRoot $HOME/Web/%2/%1 \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:80> \n\ | |
ServerAlias *.local.host \n\ | |
ServerAlias *.localhost \n\ | |
VirtualDocumentRoot $HOME/Web/%1 \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access.log combined \n\ | |
</VirtualHost> \n\ | |
" | tee /etc/apache2/sites-available/localhost.conf > /dev/null | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP83} | |
</FilesMatch> | |
AccessFileName .htaccess .phpv | |
<Directory /home/raphael/Web> \n\ | |
Options Indexes FollowSymLinks \n\ | |
AllowOverride All \n\ | |
Require all granted \n\ | |
</Directory> \n\ | |
<VirtualHost *:443> \n\ | |
ServerName local.host \n\ | |
ServerAlias localhost \n\ | |
DocumentRoot /home/raphael/Web \n\ | |
SSLEngine On \n\ | |
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem \n\ | |
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error-ssl.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access-ssl.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:443> \n\ | |
ServerAlias *.*.*.local.host \n\ | |
ServerAlias *.*.*.localhost \n\ | |
VirtualDocumentRoot /home/raphael/Web/%3/%2/%1 \n\ | |
SSLEngine On \n\ | |
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem \n\ | |
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error-ssl.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access-ssl.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:443> \n\ | |
ServerAlias *.*.local.host \n\ | |
ServerAlias *.*.localhost \n\ | |
VirtualDocumentRoot /home/raphael/Web/%2/%1 \n\ | |
SSLEngine On \n\ | |
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem \n\ | |
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error-ssl.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access-ssl.log combined \n\ | |
</VirtualHost> \n\ | |
<VirtualHost *:443> \n\ | |
ServerAlias *.local.host \n\ | |
ServerAlias *.localhost \n\ | |
VirtualDocumentRoot /home/raphael/Web/%1 \n\ | |
SSLEngine On \n\ | |
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem \n\ | |
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key \n\ | |
ErrorLog \${APACHE_LOG_DIR}/error-ssl.log \n\ | |
CustomLog \${APACHE_LOG_DIR}/access-ssl.log combined \n\ | |
</VirtualHost> \n\ | |
" | tee /etc/apache2/sites-available/localhost-ssl.conf > /dev/null | |
a2dissite 000-default | |
a2ensite localhost | |
a2ensite localhost-ssl | |
service apache2 restart | |
service php5.6-fpm reload | |
service php5.6-fpm restart | |
service php7.0-fpm reload | |
service php7.0-fpm restart | |
service php7.2-fpm reload | |
service php7.2-fpm restart | |
service php7.4-fpm reload | |
service php7.4-fpm restart | |
service php8.0-fpm reload | |
service php8.0-fpm restart | |
service php8.2-fpm reload | |
service php8.2-fpm restart | |
service php8.3-fpm reload | |
service php8.3-fpm restart | |
service php8.4-fpm reload | |
service php8.4-fpm restart | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP84} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_84 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP83} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_83 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP82} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_82 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP80} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_80 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP74} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_74 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP72} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_72 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP70} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_70 | |
echo -e "\ | |
<FilesMatch \\.php$> | |
SetHandler \${PHP56} | |
</FilesMatch> | |
" > $HOME/Web/.phpv_56 | |
update-alternatives --set php /usr/bin/php8.3 | |
} | |
install_phpmyadmin() { | |
wget $PHPMYADMIN_PACKAGE -O $HOME/Web/phpMyAdmin.zip | |
unzip $HOME/Web/phpMyAdmin.zip -d $HOME/Web | |
rm $HOME/Web/phpMyAdmin.zip | |
mv $HOME/Web/phpMyAdmin-5.2.1-english $HOME/Web/phpmyadmin | |
ln -s $HOME/Web/phpmyadmin $HOME/Web/pma | |
echo -e "<?php\n\ | |
\$cfg['blowfish_secret'] = '$(uuidgen)';\n\ | |
\$cfg['Servers'][1]['auth_type'] = 'config';\n\ | |
\$cfg['Servers'][1]['user'] = '$CURRENT_USER';\n\ | |
\$cfg['Servers'][1]['AllowNoPassword'] = true;\n\ | |
\$cfg['ThemeDefault'] = 'blueberry';\n\ | |
\$cfg['ExecTimeLimit'] = 900;\n" | tee $HOME/Web/phpmyadmin/config.inc.php > /dev/null | |
wget "https://files.phpmyadmin.net/themes/blueberry/1.1.0/blueberry-1.1.0.zip" -O $HOME/Web/phpmyadmin/themes/blueberry.zip | |
unzip $HOME/Web/phpmyadmin/themes/blueberry.zip -d $HOME/Web/phpmyadmin/themes | |
rm $HOME/Web/phpmyadmin/themes/blueberry.zip | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Web | |
} | |
install_docker() { | |
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y | |
} | |
install_unity_hub() { | |
apt install unityhub -y | |
} | |
install_anydesk() { | |
apt install anydesk -y | |
} | |
install_ngrok() { | |
apt install ngrok -y | |
} | |
install_other_packages() { | |
apt install antimicro cpu-x cheese papirus-icon-theme hardinfo simplescreenrecorder \ | |
stacer vlc filezilla filezilla-theme-papirus samba samba-common-bin smbclient remmina \ | |
remmina-plugin-rdp remmina-plugin-vnc ttf-* fonts-roboto* dconf-editor openssh-server \ | |
redshift redshift-gtk gnome-font-viewer -y | |
} | |
install_flatpak_apps() { | |
flatpak install com.spotify.Client com.slack.Slack org.blender.Blender org.kde.krita \ | |
org.inkscape.Inkscape org.gimp.GIMP org.kde.kdenlive com.usebottles.bottles com.github.tchx84.Flatseal \ | |
com.valvesoftware.Steam com.getpostman.Postman org.gnome.meld org.sqlitebrowser.sqlitebrowser \ | |
org.telegram.desktop com.discordapp.Discord com.github.IsmaelMartinez.teams_for_linux com.todoist.Todoist \ | |
org.flameshot.Flameshot io.github.Figma_Linux.figma_linux org.kde.okular io.dbeaver.DBeaverCommunity \ | |
com.github.PintaProject.Pinta com.heroicgameslauncher.hgl it.mijorus.gearlever org.audacityteam.Audacity \ | |
org.gnome.clocks org.gnome.SoundRecorder rest.insomnia.Insomnia uk.org.greenend.chiark.sgtatham.putty \ | |
com.uploadedlobster.peek com.poweriso.PowerISO io.github.nokse22.Exhibit org.DolphinEmu.dolphin-emu \ | |
org.ppsspp.PPSSPP app.xemu.xemu org.duckstation.DuckStation org.qbittorrent.qBittorrent org.gnome.Boxes -y | |
} | |
create_home_dirs() { | |
mkdir $HOME/Applications | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Applications | |
mkdir $HOME/bin | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/bin | |
mkdir $HOME/Projects | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Projects | |
mkdir $HOME/Git | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Git | |
mkdir $HOME/Web | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Web | |
mkdir $HOME/deb_temp | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/deb_temp | |
mkdir $HOME/.themes | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/.themes | |
} | |
download_third_party_packages() { | |
wget $DEB_DOCKER -P $HOME/deb_temp/ | |
wget $DEB_DRAWIO -P $HOME/deb_temp/ | |
wget $DEB_GOOGLE_CHROME -P $HOME/deb_temp/ | |
wget $DEB_HYPER -O $HOME/deb_temp/hyper.deb | |
wget $DEB_MICROSOFT_EDGE -O $HOME/deb_temp/edge.deb | |
wget $DEB_VBOX -P $HOME/deb_temp/ | |
wget $DEB_VSCODE -O $HOME/deb_temp/code.deb | |
wget $DEB_ZOOM -P $HOME/deb_temp/ | |
wget $MICROSOFT_REPO_PACKAGE -P $HOME/deb_temp/ | |
wget $VBOX_EXT_PACK -O $HOME/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack | |
} | |
install_third_party_packages() { | |
dpkg -i $HOME/deb_temp/*.deb | |
apt install -f -y | |
rm -rf $HOME/deb_temp | |
vboxmanage extpack install --replace $HOME/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack | |
rm $HOME/Oracle_VM_VirtualBox_Extension_Pack.vbox-extpack | |
} | |
install_dotnet_8() { | |
apt install dotnet8 \ | |
dotnet-apphost-pack-8.0 \ | |
dotnet-host-8.0 \ | |
dotnet-hostfxr-8.0 \ | |
dotnet-runtime-8.0 \ | |
dotnet-sdk-8.0 \ | |
dotnet-targeting-pack-8.0 \ | |
dotnet-templates-8.0 \ | |
aspnetcore-runtime-8.0 \ | |
aspnetcore-targeting-pack-8.0 -y | |
} | |
install_composer() { | |
wget https://getcomposer.org/download/latest-stable/composer.phar -O $HOME/bin/composer | |
chown $CURRENT_USER:$CURRENT_USER $HOME/bin/composer | |
chmod +x $HOME/bin/composer | |
wget https://getcomposer.org/download/latest-1.x/composer.phar -O $HOME/bin/composer1 | |
chown $CURRENT_USER:$CURRENT_USER $HOME/bin/composer1 | |
chmod +x $HOME/bin/composer1 | |
} | |
setup_aliases() { | |
touch $HOME/.bash_aliases | |
chown $CURRENT_USER:$CURRENT_USER $HOME/.bash_aliases | |
echo "alias ci='composer install'" >> $HOME/.bash_aliases | |
echo "alias cr='composer require'" >> $HOME/.bash_aliases | |
echo "alias cu='composer update'" >> $HOME/.bash_aliases | |
echo "alias pa='php artisan'" >> $HOME/.bash_aliases | |
echo "alias ni='npm install'" >> $HOME/.bash_aliases | |
echo "alias nr='npm run'" >> $HOME/.bash_aliases | |
echo "alias nrm='npm remove'" >> $HOME/.bash_aliases | |
echo "alias nvi='nvm install'" >> $HOME/.bash_aliases | |
echo "alias nvu='nvm use'" >> $HOME/.bash_aliases | |
echo "alias gc='git clone'" >> $HOME/.bash_aliases | |
echo "alias gf='git fetch'" >> $HOME/.bash_aliases | |
echo "alias gp='git pull'" >> $HOME/.bash_aliases | |
echo "alias gfp='git fetch && git pull'" >> $HOME/.bash_aliases | |
ln -s /usr/bin/gnome-calculator $HOME/bin/calc | |
chown $CURRENT_USER:$CURRENT_USER $HOME/bin/calc | |
} | |
setup_user_bin() { | |
echo "export PATH=\$PATH:\$HOME/bin" >> $HOME/.bashrc | |
} | |
setup_user_groups() { | |
usermod -aG vboxusers $CURRENT_USER | |
usermod -aG sambashare $CURRENT_USER | |
} | |
setup_dnsmasq() { | |
echo -e "\ | |
[main] \n\ | |
plugins=ifupdown,keyfile \n\ | |
dns=dnsmasq \n\ | |
\n\ | |
[ifupdown] \n\ | |
managed=false \n\ | |
\n\ | |
[device] \n\ | |
wifi.scan-rand-mac-address=no \n\ | |
" | tee /etc/NetworkManager/NetworkManager.conf > /dev/null | |
mv /etc/resolv.conf /etc/resolv.conf.original | |
ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf | |
echo -e "\ | |
address=/localhost/127.0.0.1\n\ | |
address=/local.host/127.0.0.1\n\ | |
" | tee /etc/NetworkManager/dnsmasq.d/localhost.conf > /dev/null | |
systemctl reload NetworkManager.service | |
} | |
add_user_to_samba() { | |
smbpasswd -a $CURRENT_USER | |
} | |
setup_mysql() { | |
mysql_secure_installation | |
mysql --execute="CREATE USER $CURRENT_USER;" | |
mysql --execute="GRANT ALL PRIVILEGES ON *.* TO $CURRENT_USER;" | |
mysql --execute="FLUSH PRIVILEGES;" | |
service mariadb stop | |
mv /var/lib/mysql /home/mysql | |
sed -i '/#datadir/c\datadir = /home/mysql' /etc/mysql/mariadb.conf.d/50-server.cnf | |
sed -i "s/ProtectHome=true/ProtectHome=false/g" /usr/lib/systemd/system/mariadb.service | |
systemctl daemon-reload | |
service mariadb restart | |
} | |
install_android_studio() { | |
wget $ANDROID_STUDIO_PACKAGE -O $HOME/Applications/android-studio.tar.gz | |
tar -xvf $HOME/Applications/android-studio.tar.gz -C $HOME/Applications | |
rm $HOME/Applications/android-studio.tar.gz | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Applications | |
echo -e "[Desktop Entry] | |
Name=Android Studio | |
Exec=$HOME/Applications/android-studio/bin/studio.sh | |
Comment=Android Studio IDE | |
Terminal=false | |
Icon=android-studio | |
Type=Application | |
Categories=Development;IDE;" >$HOME/.local/share/applications/android-studio.desktop | |
chown $CURRENT_USER:$CURRENT_USER $HOME/.local/share/applications/android-studio.desktop | |
chmod +x $HOME/.local/share/applications/android-studio.desktop | |
} | |
install_golang() { | |
wget $GO_PACKAGE -O $HOME/Applications/go.tar.gz | |
tar -xvf $HOME/Applications/go.tar.gz -C $HOME/Applications | |
rm $HOME/Applications/go.tar.gz | |
ln -s $HOME/Applications/go/bin/go $HOME/bin/go | |
ln -s $HOME/Applications/go/bin/gofmt $HOME/bin/gofmt | |
chown -R $CURRENT_USER:$CURRENT_USER $HOME/Applications | |
} | |
add_vscode_to_context_menu() { | |
if [ -f "/usr/share/applications/code.desktop" ]; then | |
sed -i '/MimeType/c\MimeType=text/plain;inode/directory;application/x-code-workspace;' /usr/share/applications/code.desktop | |
update-desktop-database | |
fi | |
} | |
sysctl_config() { | |
echo "kernel.apparmor_restrict_unprivileged_userns=0" >> /etc/sysctl.conf | |
sysctl -p | |
} | |
ask_reboot() { | |
echo 'Reboot now? (y/n)' | |
while true; do | |
read choice | |
if [[ "$choice" == 'y' || "$choice" == 'Y' ]]; then | |
reboot | |
exit 0 | |
fi | |
if [[ "$choice" == 'n' || "$choice" == 'N' ]]; then | |
break | |
fi | |
done | |
} | |
main() { | |
check_root_user | |
check_user_arg | |
check_home | |
show_message "Installing Gnome Software" | |
install_gnome_software | |
show_message "Creating Home Dirs" | |
create_home_dirs | |
show_message "Installing required packages" | |
update_system | |
install_required_packages | |
show_message "Adding repositories" | |
add_repositories | |
update_system | |
show_message "Installing Web Server" | |
install_web_server | |
show_message "Installing phpMyAdmin" | |
install_phpmyadmin | |
show_message "Installing Docker" | |
install_docker | |
show_message "Installing Unity Hub" | |
install_unity_hub | |
show_message "Installing Anydesk" | |
install_anydesk | |
show_message "Installing ngrok" | |
install_ngrok | |
show_message "Installing Other Packages" | |
update_system | |
install_other_packages | |
show_message "Installing Flatpak Apps" | |
install_flatpak_apps | |
show_message "Downloading and installing third-party packages" | |
download_third_party_packages | |
update_system | |
install_third_party_packages | |
show_message "Installing .NET 8" | |
update_system | |
install_dotnet_8 | |
show_message "Installing Composer" | |
install_composer | |
show_message "Setting up user aliases" | |
setup_aliases | |
show_message "Setting up user /bin" | |
setup_user_bin | |
show_message "Adding user $CURRENT_USER to groups" | |
setup_user_groups | |
show_message "Setting up reverse proxy with dnsmasq" | |
setup_dnsmasq | |
show_message "Adding user $CURRENT_USER to Samba" | |
add_user_to_samba | |
show_message "Setting up MySQL with user $CURRENT_USER" | |
setup_mysql | |
show_message "Installing Android Studio" | |
install_android_studio | |
show_message "Installing GoLang" | |
install_golang | |
show_message "Adding VS Code MimeTypes" | |
add_vscode_to_context_menu | |
show_message "Apply sysctl configs" | |
sysctl_config | |
show_message "Finished!" | |
echo "It's recommended to reboot your system." | |
ask_reboot | |
} | |
(return 2> /dev/null) || main |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
sudo mint-post-install.sh <current user>