# My Development Setup I always envied :unamused: Mac users until I found [Elementary OS](https://elementary.io) <img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.MYqzu9C0dmtRrM2BukhamAHaHa%26pid%3DApi&f=1" width=20 /> 3 years ago and I must confess, I have never thought of trying any other linux distro and my burning desire for a Mac has been quenched :fire: :fire_engine: by Elementary OS and hell-no going back to Windows 10 for development :-1: . I simply love the look and feel of <img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse4.mm.bing.net%2Fth%3Fid%3DOIP.MYqzu9C0dmtRrM2BukhamAHaHa%26pid%3DApi&f=1" width=20 />OS :relaxed:. Follow through this guide and get your machine ready for full-stack development. By the way I am not a Full Stack Developer yet but I'm working towards that goal :sunglasses::+1:. - ### Update the OS ```bash= sudo apt update sudo apt upgrade sudo apt dist-upgrade sudo apt install software-properties-common apt-transport-https curl sudo apt autoremove ``` - ### Install APT-FAST :zap: If you chose to skip this step, start every `apt` command with `sudo` ```bash= sudo add-apt-repository -y ppa:apt-fast/stable sudo apt -y install apt-fast echo $'\nalias apt="apt-fast"' >> ~/.bashrc source ~/.bashrc ``` - ### Browse the Web - ### [Brave Browser](https://brave.com/linux/#linux) (recommended) ```bash= apt install apt-transport-https curl gnupg curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add - echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list apt update apt install brave-browser ``` - #### Firefox Developer Edition ```bash= umake web firefox-dev ``` - ### Install system tweak tools :wrench: ```bash= sudo apt install software-properties-common sudo add-apt-repository ppa:philip.scott/elementary-tweaks sudo apt update sudo apt install elementary-tweaks ``` - ### Tweak your system :gear: ```bash= # Icon Pack La Capitaine by @keeferrourke mkdir ~/.icons && cd ~/.icons git clone https://github.com/keeferrourke/la-capitaine-icon-theme.git cd la-capitaine-icon-theme && ./configure # Icon Pack La Capitaine by @keeferrourke sudo add-apt-repository ppa:dyatlov-igor/la-capitaine apt install la-capitaine-cursor-theme # Fix Lag on Login/Restart by @Jason Waddington sudo mv /etc/xdg/autostart/at-spi-dbus-bus.desktop /etc/xdg/autostart/at-spi-dbus-bus.disabled sudo mv /usr/share/upstart/xdg/autostart/at-spi-dbus-bus.desktop /usr/share/upstart/xdg/autostart/at-spi-dbus-bus.disabled ``` - ### Change computer name(optional) :pencil2: ```bash= # replace <computerName> with your prefered name sudo gedit /etc/hosts # 127.0.1.1 <computerName> sudo gedit /etc/hostname #<computerName> ``` - ### Install some system tools :computer: ```bash= # For editing files apt install gedit # Improves battery life by reducing the number of running programms sudo add-apt-repository ppa:linrunner/tlp apt update apt install tlp tlp-rdw sudo tlp start # Install Laptop Mode Tools sudo add-apt-repository ppa:ubuntuhandbook1/apps apt update apt install laptop-mode-tools ``` - ### Install Archive Formats :package: ```bash= apt install unace rar unrar p7zip-rar p7zip sharutils uudeview mpack arj cabextract lzip lunzip ``` - ### Install Snap Package Manager:package: ```bash= apt update apt installl snapd ``` - ### Install Ubuntu Make ```bash= sudo add-apt-repository ppa:lyzardking/ubuntu-make apt update apt install ubuntu-make ``` - ### Install Git and SSH ```bash= apt install openssh-server apt install git ssh-keygen -t rsa -b 4096 cat ~/.ssh/id_rsa.pub # copy the output and create a new SSH key on [Github](https://github.com/settings/ssh/new) ``` - ### Must Have - Zeal Offline Documentation for Developers( any language) ```bash= apt install zeal ``` - Eddy( for installing .deb files) <img src="https://appstream.elementary.io/appcenter/media/bionic/com/github/donadigo.eddy/090625F15DE0228415D57CEAC2CE5B19/icons/64x64/com.github.donadigo.eddy_com.github.donadigo.eddy.png" width=20 /> [![Get it on App Center](https://camo.githubusercontent.com/6a6f1909e7e6a91133e8dca3683aa0f0fc518f3bbd265e7ba30aadf226943a5e/68747470733a2f2f61707063656e7465722e656c656d656e746172792e696f2f62616467652e737667)]( https://appcenter.elementary.io/com.github.donadigo.eddy) - Xtreme Downlaod Manager <a href="https://github.com/subhra74/xdm/releases/download/7.2.11/xdm-setup-7.2.11.tar.xz"><img src="https://camo.githubusercontent.com/9ec1fbf8543b4cf2150977e7056d17d442b387e51005cf3f727491eb286a3cf5/68747470733a2f2f692e737461636b2e696d6775722e636f6d2f544f66714c2e706e67" width=20px /> Download here</a> 1.Extract the downloaded tar.xz file 2. Follow the instructions in the `readme.txt` file - Gparted: Partition maker ```bash= apt install gparted ``` - ### Docker :whale2: Follow the tutorial on [Installing Docker CE on elementary OS 5.0 Juno](https://blog.avojak.com/2019/01/18/installing-docker-on-elementary-os/) for a detailed explanation of the commands below ```bash= # uninstall previous versions sudo apt-get remove \ docker \ docker-engine \ docker.io \ containerd \ runc # Install Docker CE via the Docker repository apt update apt install \ apt-transport-https \ ca-certificates \ curl \ gnupg2 \ software-properties-common # Add Docker's GPG key, and verify that you have the key with the # fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 # your output must be exactly like below pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S] # Add the stable Docker repository. # The key here is to use bionic, # because elementary OS 5.0 Juno is build on Ubuntu 18.04 LTS "Bionic Beaver". sudo apt-add-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" # Install Docker CE sudo apt update sudo apt install docker-ce # Add your user to the docker group to avoid typing sudo for every docker command: sudo usermod -aG docker ${USER} su - ${USER} id -nG # Install DockerCompose sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # Make the binart executable sudo chmod +x /usr/local/bin/docker-compose # Note: If the command docker-compose fails after installation, check your path. # You can also create a symbolic link to /usr/bin or any other directory in your path. sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # Optionally, install command completion for the bash and zsh shell. sudo curl -L https://raw.githubusercontent.com/docker/compose/1.28.2/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose # Test the installation. docker-compose --version ``` - ### Kitematic: Docker GUI <a href="https://github.com/docker/kitematic/releases/download/v0.17.13/Kitematic-0.17.13-Ubuntu.zip" ><img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse2.mm.bing.net%2Fth%3Fid%3DOIP.Ls6eKNKThoBKVimtpNgexgHaHa%26pid%3DApi&f=1" width=60 /> Download here</a> - ### IDE :memo: Run `umake ide --help` or `umake --list` to see all IDE you can install Get the [beautiful Operator Mono Book Lig fonts here](https://github.com/KayodeOgidan/Operator-Mono-Fonts.git ) - #### Visual Studio Code Checkout my Extensions Settings per language/framework for VS Code ```bash= umake ide visual-studio-code ``` - ### Netbeans ```bash= umake ide netbeans ``` - ### PHP Storm ```bash= umake ide phpstorm ``` - ### Sublime ```bash= umake ide sublime-text ``` - ### Pycharm ```bash= umake ide pycharm # pycharm-educational or pycharm-professional ``` - ### Webstorm ```bash= umake ide webstorm ``` - ### GraphQL Playground <a href="https://github.com/graphql/graphql-playground/releases/download/v1.8.10/graphql-playground-electron_1.8.10_amd64.deb" > <img src="https://camo.githubusercontent.com/595fe5c1bfc8ed17466062617e08a62a84b710a9ada5af2ba3b48af950bb09b5/68747470733a2f2f696d6775722e636f6d2f35667a4d6279562e706e67" width= 100 style="margin-right:20px"/> Download it here </a> - #### Android Studio ```bash= umake android android-studio # launch the android studio and # complete the wizard to install the Android SDK(recommended) ``` - ### Database Tools - [BeeKeeper Studio]("https://docs.beekeeperstudio.io/installation/#linux-installation") ```bash= # Install our GPG key wget --quiet -O - https://deb.beekeeperstudio.io/beekeeper.key | sudo apt-key add - # add our repo to your apt lists directory echo "deb https://deb.beekeeperstudio.io stable main" | sudo tee /etc/apt/sources.list.d/beekeeper-studio-app.list # Update apt and install apt update apt install beekeeper-studio ``` - ### Languages and Frameworks Setup :ab: - #### Node JS ```bash= # hint: remove the `| bash` to see the content curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash source ~/.bashrc # list all available versions nvm list-remote # or `nvm ls-remote` # nvm install <version> # latest: 15.8.0 nvm install lts/fermium npm -v node -v # alternatives to npm # 1. PNPM npm i -g pnpm pnpm -v npm install -g yarn yarn -v ``` - ### Rust ```bash= umake rust rust-lang ``` - ### Go ```bash= umake go go-lang ``` - ### GraphQL Playground - ### Kotlin ```bash= umake kotlin kotlin-lang ``` - ### Python Ubuntu 18.04 + and other versions of Debian Linux ship with both Python 3 and Python 2 pre-installed. So simple update and upgrade your OS. ```bash= apt update apt upgrade python3 -V ``` - ### PHP and Apache 2 ```bash= apt install software-properties-common sudo add-apt-repository ppa:ondrej/php apt update # apt install <phpversion> libapache2-mod-<phpversion> # available vesions: # php7.0, php7.1, php7.2, php7.3, php7.4, php8.0 apt install php8.0 libapache2-mod-php8.0 # install these php extensions # apt install <phpversion>-ext apt install php8.0-gd php8.0-xml php8.0-soap php8.0-mbstring php8.0-mysql php8.0-pgsql # you can install multiple versions per your needs # set the default version using sudo update-alternatives --set php /usr/bin/<phpversion> sudo update-alternatives --set php /usr/bin/php8.0 # disable php version module for apache2 using `sudo a2dismod <phpversion>` sudo a2dismod php5.6 # enable php version module for apache2 using `sudo a2enmod <phpversion>` sudo a2enmod php8.0 # restart apache server sudo systemctl restart apache2 ``` - ### Composer ```bash= # change Directory to your home folder cd ~ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" # install globally sudo mv composer.phar /usr/local/bin/composer # add composesr to env PATH sudo gedit ~/.bashrc # place this at the last line of the ~/.bashrc file export PATH="$PATH:$HOME/.config/composer/vendor/bin:/usr/local/bin/composer" # update you env PATH source ~/.bashrc # Install PHP Code Sniffer for linting php composer global require "squizlabs/php_codesniffer=*" #test to see if composer is installed globally composer ``` - ### MySQL Follow the tutorial on [How To Install MySQL on Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04) for a detailed explanation of the commands below ```bash= apt update apt install mysql-server sudo mysql_secure_installation sudo mysql mysql -u parables -p systemctl status mysql.service sudo mysqladmin -p -u parables version ``` - ### Laravel - #### Installation Via Composer ```bash= # example-app is the name of your project composer create-project laravel/laravel example-app cd example-app php artisan serve ``` - #### The Laravel Installer ```bash= # example-app is the name of your project composer global require laravel/installer laravel new example-app cd example-app php artisan serve ``` - #### Installation Via Laravel Sail - ### Android Apps ```bash= # install Android Studio not not already instaalled umake android android-studio # launch the android studio and # complete the wizard to install the Android SDK(recommended) # or run use umake to install to it umake android android-platform-tools android-sdk android-ndk ``` - ### Flutter ```bash= # first install Android Studio and complete the wizard to download and install the Android SDK umake dart dart-sdk flutter-sdk flutter doctor --android-licenses flutter config --android-studio-dir="$HOME/.local/share/umake/android/android-studio/" flutter config --android-sdk="$HOME/Android/Sdk" # install VS Code umake ide visual-studio-code flutter doctor run ``` - ### Install Multimedia Codecs and Enable DVD Playback (for the sake of watching tutorials :wink: ```bash= apt install ubuntu-restricted-extras apt install libavcodec-extra apt install libdvd-pkg ``` - Install LibreOffice, an alternative to Microsoft Office ```bash= sudo apt install libreoffice libreoffice-gtk3 libreoffice-style-elementary ```