Skip to content

Instantly share code, notes, and snippets.

@iosifnicolae2
Last active January 14, 2022 09:40
Show Gist options
  • Save iosifnicolae2/510af583cffffbd755ef1fb747f769ad to your computer and use it in GitHub Desktop.
Save iosifnicolae2/510af583cffffbd755ef1fb747f769ad to your computer and use it in GitHub Desktop.

This script might work only on Linux Mint.
If you notice a problem with the script, please send me an email to iosif@mailo.dev

Instructions:

wget https://gist.githubusercontent.com/iosifnicolae2/510af583cffffbd755ef1fb747f769ad/raw/0c2709127d201816e4b37584fcab42e29095a5de/setup_linux.sh
chmod +x ./setup_linux.sh
./setup_linux.sh
# Install the nvidia driver as recommended by Linux Mint
# Open nvidia GUI and under OpenGL Settings set Image Settings to "High Performance""
set -e
USERNAME=iosif
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root. Run sudo su"
exit 1
fi
echo "Using upstream release name in linux"
grep "UBUNTU_CODENAME" /etc/os-release | awk '{ print $2 }'
UPSTREAM_CODENAME=$(sed 's/UBUNTU_CODENAME=//;t;d' /etc/os-release)
sudo cp /etc/os-release /etc/os-release.original
NEW_OS_RELEASE=$(sed -E "s/VERSION_CODENAME=.*/VERSION_CODENAME=$UPSTREAM_CODENAME/g" /etc/os-release)
echo "$NEW_OS_RELEASE" | sudo tee /etc/os-release
sudo apt-get update
echo "Installing Git"
sudo apt-get install -y git
git config --global core.pager cat
wget -qO - https://packagecloud.io/shiftkey/desktop/gpgkey | sudo tee /etc/apt/trusted.gpg.d/shiftkey-desktop.asc > /dev/null
sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/shiftkey/desktop/any/ any main" > /etc/apt/sources.list.d/packagecloud-shiftky-desktop.list'
sudo apt-get update
sudo apt install -y github-desktop
echo "Installing useful dependencies"
sudo apt-get install -y \
build-essential \
cmake \
curl \
m4 \
ruby \
texinfo \
libbz2-dev \
libcurl4-openssl-dev \
libexpat-dev \
libncurses-dev \
zlib1g-dev \
zsh
echo "Installing homebrew"
sudo -u $USERNAME /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/iosif/.profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "Installing go"
sudo -u $USERNAME /bin/bash -c "eval ""$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)""brew install go"
echo "Installing snap"
sudo rm /etc/apt/preferences.d/nosnap.pref
sudo apt update
sudo apt-get install -y snapd
echo "Installing jq"
sudo snap install jq
echo "Installing linux-headers"
sudo apt-get install -y linux-headers-$(uname -r)
echo "Installing Gammy"
sudo apt install -y build-essential libgl1-mesa-dev qt5-default libxxf86vm-dev libxext-dev
git clone https://github.com/Fushko/gammy.git
cd gammy
qmake Gammy.pro
make
sudo make install
cd ../ && rm -rf gammy
sudo ln -s /opt/gammy/bin/gammy /usr/local/bin/
mkdir -p ~/.config/autostart/
cat > ~/.config/autostart/gammy.desktop << EOF
[Desktop Entry]
Name=Gammy
GenericName=Screen control
Comment=Adaptive screen brightness and temperature
Exec=gammy
Terminal=false
Type=Application
Icon=gammy
Categories=Utility;System;
Keywords=brightness,temperature,screen,control;
StartupNotify=false
EOF
echo "Installing Node.js"
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
echo "Installing Yarn"
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
echo "Installing Teamviewer"
wget https://download.teamviewer.com/download/linux/teamviewer_amd64.deb
sudo apt-get install -y libminizip1
dpkg -i teamviewer_amd64.deb
apt-get install -f -y
rm -rf teamviewer_amd64.deb
echo "Installing Skype"
sudo snap install skype
echo "Generating SSH keys"
ssh-keygen -t rsa -b 4096
echo "Installing Intelij Idea Ultimate"
sudo snap install intellij-idea-ultimate --classic
echo "Installing Android Studio"
sudo snap install android-studio --classic
echo "Installing Dart&Flutter for Android Studio"
sudo apt-get install -y apt-transport-https
sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
sudo apt-get update
sudo apt-get install -y dart
echo 'export PATH="$PATH:/usr/lib/dart/bin"' >> ~/.profile
sudo snap install flutter --classic
echo "Configure Android Studio to use following Flutter SDK path:"
echo "/usr/lib/dart"
export PATH="$PATH:/usr/lib/dart/bin"
flutter upgrade
echo "Configure Android Studio to use following Flutter SDK path:"
flutter sdk-path
echo "Installing Brave"
sudo snap install brave
echo "Installing 1Password"
sudo snap install 1password
echo "Installing Robo3t"
sudo snap install robo3t-snap
echo "Enabling SSH access"
apt-get install openssh-server -y
echo "Installing Docker"
sudo apt-get remove docker docker.io containerd runc
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo usermod -a -G docker $USER
sudo usermod -a -G docker $USERNAME
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
echo "Installing Notion"
sudo snap install notion-snap
echo "Installing OBS"
sudo snap install obs-studio
echo "Installing Wireguard"
sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
sudo snap install wireguard-ammp
sudo apt install -y wireguard wireguard-tools
wget https://github.com/Devsfy/wiregui/releases/download/1.8.0/wiregui_1.8.0_amd64.deb
sudo dpkg -i wiregui_1.8.0_amd64.deb
sudo apt-get install -f -y
rm -rf wiregui_1.8.0_amd64.deb
echo "Installing OpenVPN"
sudo snap install easy-openvpn
echo "Installing PacketSender"
snap install packetsender
echo "Installing Python"
sudo apt install -y python3-virtualenv python3-dev libpq-dev python3-pip
echo "Installing PgAdmin"
sudo apt install -y libgmp3-dev build-essential libssl-dev
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
# Install for both desktop and web modes:
sudo apt install -y pgadmin4
echo "Installing Postman"
sudo snap install postman
echo "Installing Signal"
sudo snap install signal-desktop
echo "Installing Preload"
sudo apt-get install preload
echo "Installing iotop"
sudo apt install -y iotop
echo "Installing htop"
sudo apt-get install -y htop
echo "Installing filezilla"
sudo apt-get install -y filezilla
echo "Storing the /tmp directory in ram"
sudo cp -v /usr/share/systemd/tmp.mount /etc/systemd/system/
sudo systemctl enable tmp.mount
echo "Storing the /tmp directory in ram"
sudo apt-get -y --purge remove linux-sound-base alsa-base alsa-utils
sudo apt-get install -y linux-sound-base alsa-base alsa-utils
echo "Installing gedit"
sudo apt install -y gedit
echo "Installing Alsa Audio"
sudo apt install -y pavucontrol
echo "Fixing the audio buzzing"
echo "options snd-hda-intel power_save=0 power_save_controller=N" | sudo tee -a /etc/modprobe.d/alsa-base.conf
echo "Disabling ipv6"
echo "net.ipv6.conf.all.disable_ipv6=1" | sudo tee -a echo "something" | sudo tee -a /etc/config_file
echo "net.ipv6.conf.default.disable_ipv6=1" | sudo tee -a echo "something" | sudo tee -a /etc/config_file
echo "Installing nvm"
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
echo "Configure Linux Mint theme to look like MacOS Big Sur"
sudo apt install -y sassc optipng inkscape libcanberra-gtk-module libglib2.0-dev libxml2-utils
sudo apt install -y sassc optipng inkscape libcanberra-gtk-module libglib2.0-dev libxml2-utils
git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git
cd WhiteSur-gtk-theme/
./install.sh
cd ..
git clone https://github.com/vinceliuice/WhiteSur-icon-theme.git
cd WhiteSur-icon-theme/
./install.sh
cd .. && rm -rf WhiteSur-icon-theme/
git clone https://github.com/vinceliuice/McMojave-cursors.git
cd McMojave-cursors/
./install.sh
cd .. && rm -rf McMojave-cursors/
sudo apt install -y plank
sudo apt install -y nautilus
echo "Tuning linux"
sudo sysctl -w fs.file-max=2000500
sudo sysctl -w fs.nr_open=2000500
sudo sysctl -w net.nf_conntrack_max=2000500
ulimit -n 2000500
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
echo "Setup KVM support (useful for running Windows or Android emulators)"
sudo apt install -y cpu-checker qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virt-manager
sudo kvm-ok
read -p "Please make sure that Virtualization Technology(VT) is ennabled in BIOS"
echo "Setup Linux to look like MacOS"
read -p "Follow this tutorial: https://www.youtube.com/watch?v=DMs7DX3Um9E . Press enter when it's done"
dconf write /org/cinnamon/desktop/wm/preferences/button-layout "'close,minimize,maximize'"
rm -rf WhiteSur-gtk-theme/
echo "Adding the nvidia ppa"
MINT_CODENAME=$(grep -oP 'CODENAME=\K\w+' /etc/linuxmint/info)
UBUNTU_CODENAME=$(lsb_release -sc)
sudo ln -rs /usr/share/mintsources/$MINT_CODENAME /usr/share/mintsources/$UBUNTU_CODENAME
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
echo "Upgrading all the packages to the latest version"
sudo apt-get upgrade
echo "Enable Timeshift"
read -p "Please enable Timeshift on your Linux machine. Press enter when it's done"
echo "Update all the linux packages"
read -p "Update all the linux packages from Update Manager. Press enter when it's done"
echo "Enable syncing in Brave"
read -p "Please enable syncing in Brave with your phone. Press enter when it's done"
echo "Installing Loom"
read -p "Install Loom in Brave. Press enter when it's done"
echo "Installing 1Password"
read -p "Install 1Password in Brave. Press enter when it's done"
echo "Installing Toggl"
read -p "Install Toggl in Brave. Press enter when it's done"
echo "Installing Zenhub"
read -p "Install Zenhub in Brave. Press enter when it's done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment