Skip to content

Instantly share code, notes, and snippets.

@ldrahnik
Last active September 13, 2022 13:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save ldrahnik/06d13c7707e1f3c1bfdade2f054b71e8 to your computer and use it in GitHub Desktop.
Save ldrahnik/06d13c7707e1f3c1bfdade2f054b71e8 to your computer and use it in GitHub Desktop.
Elementary OS Loki installation - Ubuntu 16.04 (https://elementary.io/)
#!/bin/bash
# finished install proccess
# first update
sudo apt -y update && sudo apt -y upgrade
# common
sudo apt install -y software-properties-common # add-apt-repository needs
sudo apt install -y ubuntu-restricted-extras # allows the user to install essential software which is not already included due to legal or copyright reasons
# make
sudo apt install make
# user folders
mkdir /home/ldrahnik/projects
# settings:
# notification -> disable sounds
# sound -> sound effects -> mute
# mouse & touchpad -> mouse pointer speed
# user accounts -> ghost session disable
# security & privacy -> disable entire history
# elementary tweaks
sudo add-apt-repository -y ppa:philip.scott/elementary-tweaks
sudo apt -y update
sudo apt install -y elementary-tweaks
# tweaks:
# terminal -> follow last tab (gsettings set org.pantheon.terminal.settings follow-last-tab true)
# terminal -> disable unsafe paste alert
# animations -> disable animations
## google chrome
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt -y update
sudo apt install -y google-chrome-stable
# run:
# do not send auto reports to google
# git
sudo apt install -y git
sudo apt-get install xclip # used below in copy pasting github ssh keys
git config --global core.excludesfile ~/.gitignore_global
# edit ~/.gitconfig (with specific content https://gist.github.com/ldrahnik/f2124d2ff1b130bd14f53834ec0b398b)
# create ~/.gitignore_global (with specific content https://gist.github.com/ldrahnik/f12422017b327e11e54afdeda6a6d166)
# github ssh key: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
# github gpg key: https://help.github.com/articles/generating-a-new-gpg-key/
# git add gpg key: https://help.github.com/articles/telling-git-about-your-gpg-key/
# git enable gpg key: https://help.github.com/articles/telling-git-about-your-gpg-key/config // git --global commit.gpgsign true
# dropbox
cd /home/ldrahnik/projects
git clone git@github.com:zant95/elementary-dropbox.git
cd /elementary-dropbox
bash install.sh
# 1) bug (should be fixed now) - fix icon - for example icon at ~/.local/share/applications/dropbox to /home/ldrahnik/projects/elementary-dropbox/icons/64x64/apps
# peek - an animated GIF recorder (https://github.com/phw/peek)
sudo add-apt-repository -y ppa:peek-developers/stable
sudo apt -y update
sudo apt install -y peek
# 1) settings -> keyboard -> shortcuts -> add custom:
# `peek` - assign left shift + print screen button (image is saved to screenshots folder)
# shutter
sudo add-apt-repository -y ppa:shutter/ppa
sudo apt -y update
sudo apt install -y shutter
# 1) after install: add to Apps/Startup/Shutter -> enable
# or in Shutter preferences enable Start Shutter at login -> enable
#
# 2) main -> change screenshots folder to -> screenshots
# 3) behavior -> hide notification icon -> enable
# 4) behavior -> start shutter at login
# 5) behavior -> hide window on first lunch
# 6) advanced -> show help text -> disable
# 7) settings -> keyboard -> shortcuts -> add custom:
# `shutter -s -e` - assign print screen button (-s .. selective, -e .. after print screen auto-exit shutter app (image is saved to screenshots folder))
# vlc
sudo apt install -y vlc ffmpeg
# remove apps
sudo apt remove screenshot-tool -y
sudo apt remove pantheon-mail -y
sudo apt remove maya-calendar -y
sudo apt remove epiphany-browser -y
sudo apt remove audience -y
sudo apt remove noise -y
sudo apt remove scratch-text-editor -y
sudo apt remove simple-scan -y
sudo apt remove pantheon-calculator -y
sudo apt remove appcenter -y
sudo rm /etc/apt/sources.list.d/appcenter.list
sudo rm /etc/apt/sources.list.d/appcenter.list.save
rm -rf ~/.cache/epiphany
rm -rf ~/.config/epiphany
rm -rf ~/.cache/simple-scan
rm -rf ~/.cache/pantheon-photos
# mutt - an e-mail client (http://mutt.org)
# create config files (~/.mutt/muttrc + ~/.mutt/mailcap)
cd /opt/
sudo wget -c ftp://ftp.mutt.org/pub/mutt/mutt-1.9.0.tar.gz
sudo tar xf mutt-1.9.0.tar.gz
sudo rm mutt-1.9.0.tar.gz
cd mutt-1.9.0/
sudo apt install -y build-essential libncurses5-dev libncursesw5-dev
sudo apt install -y libssl-dev
sudo apt install -y libsasl2-dev
sudo apt install -y libtokyocabinet-dev
./configure --enable-pop --enable-imap --with-ssl --with-sasl --enable-smtp --enable-hcache --enable-sidebar --with-tokyocabinet
make
sudo make install
# neomutt (eventually)
# sudo apt install -y devscripts
# sudo apt install -y libgpgme11-dev
# gedit
sudo apt install -y gedit
# disable bluetooth
# add before last return /etc/rc.local rfkill block bluetooth
# atom
sudo add-apt-repository -y ppa:webupd8team/atom && sudo apt -y update
sudo apt install -y atom
# apache
sudo apt install -y apache2
# stop apache (port :80 will be configurated via nginx)
sudo service apache2 stop
# nginx
sudo apt install -y nginx
# php 5.6
sudo apt install -y php5.6 php5.6-bcmath php5.6-bz2 php5.6-cgi php5.6-cli php5.6-common php5.6-curl php5.6-dba php5.6-dev php5.6-enchant php5.6-fpm php5.6-gd php5.6-gmp php5.6-imap php5.6-interbase php5.6-intl php5.6-intl php5.6-json php5.6-json php5.6-ldap php5.6-mbstring php5.6-mcrypt php5.6-mysql php5.6-odbc php5.6-opcache php5.6-pgsql php5.6-phpdbg php5.6-pspell php5.6-readline php5.6-recode php5.6-snmp php5.6-soap php5.6-sqlite3 php5.6-sybase php5.6-tidy php5.6-xml php5.6-xmlrpc php5.6-xsl php5.6-zip
# php 7.0
sudo apt install -y php7.0 php7.0-fpm php7.0-cli php7.0-common php7.0-mbstring php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt php7.0-zip
# php 7.1
sudo add-apt-repository -y ppa:ondrej/php && sudo apt update
sudo apt install -y php7.1 php7.1-fpm php7.1-cli php7.1-common php7.1-bcmath php7.1-bz2 php7.1-cgi php7.1-common php7.1-curl php7.1-dba php7.1-dev php7.1-enchant php7.1-gd php7.1-intl php7.1-json php7.1-ldap php7.1-mbstring php7.1-mysql php7.1-pgsql php7.1-recode php7.1-sqlite3 php7.1-xml php7.1-zip
# php 7.3
sudo add-apt-repository -y ppa:ondrej/php
sudo apt-get install php-pear php7.3 php7.3-curl php7.3-dev php7.3-gd php7.3-mbstring php7.3-zip php7.3-mysql php7.3-xml
# sendmail
sudo apt install -y sendmail
# when is installation freezed on Creating SSL certificates for sendmail:
# https://askubuntu.com/questions/937666/ubuntu-16-04-command-line-sendmail-installation-hanged
# composer
sudo apt install -y php-cli php-mbstring
cd /home/ldrahnik/projects
curl -sS https://getcomposer.org/installer -o composer-setup.php
# next, run a short PHP script to verify that the installer matches the SHA-384 hash for the latest installer found on the Composer Public Keys / Signatures (https://composer.github.io/pubkeys.html)
php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
# because for directory /usr/local/bin is sudo required but for .composer not
sudo chown -R $USER $HOME/.composer
# permissions apache & nginx folder
sudo chown -R $USER /usr/share/nginx
sudo chown -R $USER /var/www/
# alchemist - projects manager (https://github.com/alchemist-org/alchemist)
cd /home/ldrahnik/projects
git clone git@github.com:alchemist-org/alchemist.git
cd alchemist
composer install
# add alias to ~.bash_aliases: alias alchemist='php /home/ldrahnik/projects/alchemist/bin/alchemist.php'
# add config.local.neon from previous using alchemist or just create file config.local.neon
# (copy adminer.css to /adminernginx/adminer and /adminerapache/adminer folder adminer.css file from https://www.adminer.org/)
#
# alchemist install
# nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.2/install.sh | bash
# re-open terminal
# node (include npm)
nvm install node
# grunt
npm install -g grunt-cli
# update npm
npm update npm -g
# slack
cd /opt
sudo wget -c https://downloads.slack-edge.com/linux_releases/slack-desktop-2.7.1-amd64.deb
sudo dpkg -i slack-desktop-2.7.1-amd64.deb
sudo rm slack-desktop-2.7.1-amd64.deb
# redshift
sudo apt install -y redshift redshift-gtk
# after:
# set up in settings auto start -> enable
# plank
plank --preferences
# after all: lock icons
# phpstorm
cd /opt
sudo wget https://download-cf.jetbrains.com/webide/PhpStorm-2017.2.2.tar.gz
sudo tar -xvf PhpStorm-2017.2.2.tar.gz
# sudo chown -R $USER:$USER /opt/PhpStorm-xxx # phpstorm is able selfupdate, but needs write access
sudo rm PhpStorm-2017.2.2.tar.gz
# add file type .phpt under php
# install plugins: latte, neon, ..
# sudo /opt/PhpStorm-172.3544.41/bin/phpstorm.sh # sudo because updates need to be root to automatically do that stuff
# go to Tools menu on PhpStorm and select Create Desktop Entry... from drop down -> sudo -> re-lock your icon again
#
# copy custom live templates to ~/.PhpStorm2017.2/config/templates
# mysql
sudo apt-get install mysql-server # interactive - ask to insert root password
# sudo mysql_secure_installation (interactive - remove testing databases, change root password etc. - WARNING: during this script is not possible set up empty password: Sorry, you can't use an empty password here.)
# xdebug
sudo apt-get install -y php-xdebug
# vim
sudo apt-get install -y vim
# create ~/.vimrc (with specific content)
# happy_hacking color theme
cd /home/ldrahnik/projects
git clone git@github.com:YorickPeterse/happy_hacking.vim.git
mkdir -p ~/.vim/colors
# ln -s /home/ldrahnik/projects/colors/happy_hacking.vim ~/.vim/colors/happy_hacking.vim WARNING: does not work
cp ~/projects/happy_hacking.vim/colors/happy_hacking.vim ~/.vim/colors
# vundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
# gparted (used for example for reformating usb disk)
sudo apt install -y gparted
# graphic sw
sudo apt install -y gimp inkscape
# filezilla
sudo apt install -y filezilla
# steam (eventually)
# sudo apt install -y steam
# pavucontrol
sudo apt install -y pavucontrol
# bugs:
# 1) headset is not detected correctly so add this:
# edit: sudo gedit /etc/modprobe.d/alsa-base.conf and add line in the end: "options snd-hda-intel model=,dell-headset-multi"
# 2) automatically switch to headset microphone when plugged-in (someone else wanted the same and created ticket https://bugs.freedesktop.org/show_bug.cgi?id=1017980, marked as notbug)
# we can add the following line to our /etc/pulse/default.pa
# load-module module-switch-on-connect (equivalent of pacmd load-module module-switch-on-connect)
# discord
cd /opt/
sudo apt install libc++1
sudo wget -O discord.deb https://discordapp.com/api/download?platform=linux&format=deb
sudo dpkg -i discord.deb
sudo rm discord.deb
# wireshark
sudo apt -y install wireshark
# after logout, when it does not work automagically (wireshark asks during installation):
# gpasswd -a $USER wireshark -> logout and it should works (https://askubuntu.com/questions/458762/how-to-enable-wireshark-without-running-as-root-in-trusty-14-04)
# gitkpg
sudo apt install -y gitpkg
# texlive
sudo apt install -y texlive texstudio
sudo apt install -y texlive-lang-czechslovak
# example: change section & subsection format via package titlesec and much more packages
sudo apt install -y texlive-formats-extra
sudo apt install -y texlive-latex-base
# office
sudo apt install -y libreoffice
# unetbootin (how to create windows bootable usb)
sudo apt-get install -y unetbootin
# rpm
sudo apt install -y rpm
# alien
sudo apt-get install alien dpkg-dev debhelper build-essential
# openvpn
sudo apt install -y openvpn
# traceroute (ping is only included by default)
sudo apt install -y inetutils-traceroute
# vagrant
sudo apt install -y vagrant
# virtualbox
sudo apt install -y virtualbox-qt
# octave (like matlab but free)
sudo apt install -y octave
# nethogs (traffic per process)
sudo apt install -y nethogs
# sqldeveloper
sudo apt install -y sqldeveloper-package
cd opt
sudo wget --user <e-mail> --password <password> http://download.oracle.com/otn/java/sqldeveloper/sqldeveloper-17.4.1.054.0712-no-jre.zip
cd sqldeveloper
sudo ln -s /opt/sqldeveloper/sqldeveloper.sh /usr/local/bin/sqldeveloper
sudo gedit sqldeveloper.sh
# #!/bin/bash
# cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*
# unset -v GNOME_DESKTOP_SESSION_ID
# cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*
# python3.6 (installed 3.5.2)
sudo apt -y install zlib1g-dev
# prolog
sudo apt install -y swi-prolog-nox
cd /opt
sudo wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
sudo tar -xvf Python-3.6.3.tgz
cd Python-3.6.3
sudo ./configure
sudo make
sudo make install
# graphic
# NVIDIA Corporation GM108M [GeForce 840M] (rev a2)
# sudo ubuntu-drivers devices # check which drivers are available
# sudo add-apt-repository ppa:graphics-drivers/ppa # (https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa)
# sudo apt update
# sudo apt-get -y install nvidia-396
# RESTART
# $ nvidia-smi
# temperature senzor
sudo apt-get install -y psensor
# preferences -> Launch on session startup
# -> Hide window on startup
# senzor prefences -> CPU senzor -> Display senzor in the label
# bugs:
# 1) fix icon
# ? unresolved - https://bugs.launchpad.net/plank/+bug/1733078 - idea about ignored icons in plank
# workaround is disable Show unpinned icons in plank --preferences
# 2) Authentication required to update SMART
# uncheck Preferences -> Providers -> Enable support of udisks2
# weather senzor
# manually for example from url in google maps: 49.1732487,16.614937
sudo add-apt-repository ppa:kasra-mp/ubuntu-indicator-weather
sudo apt update
sudo apt install -y indicator-weather
# disable notifications
# SD card os bootable maker
sudo add-apt-repository 'deb https://dl.bintray.com/resin-io/debian stable etcher'
sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 379CE192D401AB61
sudo apt -y update && sudo apt install -y etcher-electron
# ddrescue (The image can be directly written to a microSDHC for Raspberry Pi 3 B - https://ubuntu-mate.org/raspberry-pi/)
sudo apt-get install gddrescue xz-utils
# unxz ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz
# sudo ddrescue -D --force ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img /dev/sdx (download https://ubuntu-mate.org/download/)
# messanger (UNMAINTAINED) (https://github.com/aluxian/Messenger-for-Desktop)
# cd /home/ldrahnik/Downloads/
# wget https://github.com/aluxian/Messenger-for-Desktop/releases/download/v2.0.9/messengerfordesktop-2.0.9-linux-amd64.deb
# sudo dpkg -i messengerfordesktop-2.0.9-linux-amd64.deb
# caprine (alternative messanger)
cd /home/ldrahnik/Downloads/
wget https://github.com/sindresorhus/caprine/releases/download/v2.16.0/caprine_2.16.0_amd64.deb
sudo dpkg -i caprine_2.16.0_amd64.deb
# visual studio code
sudo add-apt-repository -y "deb https://packages.microsoft.com/repos/vscode stable main"
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB3E94ADBE1229CF
sudo apt -y update
sudo apt -y install code
# extensions: add C#
# nuget (vs package manager)
sudo apt -y install nuget
# microsoft packages (https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial)
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get -y install apt-transport-https
sudo apt-get update
sudo apt-get -y install dotnet-sdk-2.1.202
sudo apt-get -y install dotnet-hosting-2.0.9
# hp deskjet printer (HP DeskJet ink Advantage 5075)
# default wi-fi password 12345678
# elementary has support for 5000 series nativaly (printing, scaning i do not think so)
# obs for streaming (https://github.com/obsproject/obs-studio/wiki/Install-Instructions#linux)
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt-get -y update
sudo apt-get -y install obs-studio
# spotify (https://www.spotify.com/cz/download/linux/)
# 1. Add the Spotify repository signing keys to be able to verify downloaded packages
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90
# 2. Add the Spotify repository
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list
# 3. Update list of available packages
sudo apt-get update
# 4. Install Spotify
sudo apt-get install spotify-client
# smbclient
sudo apt install -y smbclient
# python
sudo apt install python-pip
pip install --upgrade pwntools
# folders -> add most used
# 1) Dropbox
# 2) Screenshots
# at the end
# error during removing appcenter:
# wget -q "http://packages.elementary.io/key.asc" -O- | sudo apt-key add -
#
# if u set up like me bad locale settings during first steps installation:
# sudo dpkg-reconfigure locales
sudo apt autoremove -y
sudo apt autoclean -y
@thach-pham
Copy link

thach-pham commented Jul 13, 2018

Thank you. It helps a lot.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment