├── src ├── db │ ├── mysql.sh │ └── postgresql.sh ├── languages │ ├── java.sh │ ├── javascript.sh │ └── python.sh ├── tools │ └── docker.sh ├── aliases │ ├── generic.sh │ ├── docker.sh │ └── apt.sh ├── extra │ └── uicustomization.sh └── core.sh ├── install-all.sh ├── .gitignore ├── README.md └── CHANGELOG.md /src/db/mysql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing mysql 5.7 and related tools" 4 | apt-get install -y mysql-server-5.7 libmysqlclient-dev 5 | -------------------------------------------------------------------------------- /src/db/postgresql.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing postgresql 9.6 and related tools..." 4 | apt-get install -y postgresql-9.6 postgresql-server-dev-9.6 pgadmin3 5 | -------------------------------------------------------------------------------- /src/languages/java.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing and configuring Java 8..." 4 | add-apt-repository ppa:webupd8team/java 5 | apt-get update 6 | apt-get install -y oracle-java8-installer oracle-java8-set-default 7 | -------------------------------------------------------------------------------- /install-all.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | . ./src/core.sh 4 | 5 | # languages 6 | . ./src/languages/java.sh 7 | . ./src/languages/python.sh 8 | . ./src/languages/javascript.sh 9 | 10 | # db 11 | . ./src/db/postgresql.sh 12 | . ./src/db/mysql.sh 13 | 14 | # tools 15 | . ./src/tools/docker.sh 16 | 17 | # extra 18 | . ./src/extra/uicustomization.sh 19 | 20 | # aliases 21 | . ./src/aliases/generic.sh 22 | . ./src/aliases/apt.sh 23 | . ./src/aliases/docker.sh 24 | -------------------------------------------------------------------------------- /src/tools/docker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing Docker..." 4 | 5 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 6 | sudo add-apt-repository \ 7 | "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 8 | $(lsb_release -cs) \ 9 | stable" 10 | sudo apt-get update 11 | sudo apt-get install docker-ce 12 | 13 | # add current user to docker group 14 | usermod -aG docker $(who | awk '{print $1}') 15 | 16 | echo "Docker is up and running!" 17 | -------------------------------------------------------------------------------- /src/aliases/generic.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Creating aliases for common paths..." 4 | 5 | # updates .bashrc 6 | cat << 'END' >> ~/.bashrc 7 | 8 | # Common aliases: 9 | alias documents='cd ~/Documents' 10 | alias downloads='cd ~/Downloads' 11 | alias desktop='cd ~/Desktop' 12 | alias music='cd ~/Music' 13 | alias pictures='cd ~/Pictures' 14 | alias videos='cd ~/Videos' 15 | alias media='cd /media/$(whoami)' 16 | 17 | END 18 | 19 | echo 'The following aliases have been created: documents, downloads, desktop, music, pictures, videos, media' 20 | -------------------------------------------------------------------------------- /src/aliases/docker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Creating helpful aliases for Docker..." 4 | 5 | # updates .bashrc 6 | cat << 'END' >> ~/.bashrc 7 | 8 | # docker aliases: 9 | alias dogs='docker-compose logs -f --tail 0 $@' 10 | alias doim='docker images' 11 | alias dops='docker ps -a' 12 | alias dorm='docker rm -f $(docker ps -a -q)' 13 | alias dost='docker stats $(docker ps --format={{.Names}})' 14 | alias down='docker-compose down --remove-orphans' 15 | alias uppa='docker-compose up -d' 16 | 17 | END 18 | 19 | echo "The following alias have been created: dops, doim, doip" 20 | -------------------------------------------------------------------------------- /src/extra/uicustomization.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo 'Adding tools and repository for new themes and icons...' 4 | add-apt-repository ppa:noobslab/themes 5 | add-apt-repository ppa:noobslab/icons 6 | apt-get update 7 | apt-get install -y unity-tweak-tool \ 8 | compizconfig-settings-manager \ 9 | compiz-plugins \ 10 | myelementary 11 | cd ~ && git clone https://github.com/horst3180/arc-theme --depth 1 && cd arc-theme 12 | ./autogen.sh --prefix=/usr 13 | make install 14 | rm -rf ~/arc-theme 15 | echo 'Is now possible to customize the ubuntu GUI' 16 | -------------------------------------------------------------------------------- /src/aliases/apt.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo 'Creating apt-get aliases...' 4 | 5 | # updates .bashrc 6 | cat << 'END' >> ~/.bashrc 7 | 8 | # apt-get aliases: 9 | alias apt-install='sudo apt-get install -y' 10 | alias apt-installed='apt list --installed' 11 | alias apt-remove='sudo apt-get remove' 12 | alias apt-purge='sudo apt-get purge' 13 | alias apt-update='sudo apt-get update' 14 | alias apt-upgrade='sudo apt-get dist-upgrade -y' 15 | alias apt-search='apt-cache search --names-only' 16 | alias apt-add-repo='sudo add-apt-repository -y' 17 | alias apt-remove-repo='sudo add-apt-repository --remove' 18 | 19 | END 20 | 21 | echo 'The following aliases have been created: apt-install, apt-list, apt-remove, apt-purge, apt-update, spt-search' 22 | -------------------------------------------------------------------------------- /src/languages/javascript.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing nodejs and common frontend development tools..." 4 | 5 | # download nvm 6 | git clone https://github.com/creationix/nvm.git ~/.nvm 7 | cd ~/.nvm 8 | git checkout `git describe --abbrev=0 --tags` 9 | 10 | # set variables 11 | export NVM_DIR="/home/dave/.nvm" 12 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 13 | 14 | 15 | # update .bashrc 16 | cat << 'END' >> ~/.bashrc 17 | 18 | # nvm settings: 19 | export NVM_DIR="/home/dave/.nvm" 20 | [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" 21 | 22 | END 23 | 24 | # install node/npm 25 | nvm install stable 26 | 27 | # install npm packages 28 | npm install -g jspm 29 | npm install -g gulp 30 | npm install -g grunt-cli 31 | npm install -g bower 32 | npm install -g phantomjs 33 | 34 | echo "Node, NPM, jspm, gulp, grunt, phantomjs and bower have been installed" 35 | -------------------------------------------------------------------------------- /src/languages/python.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # clone the github repo 4 | echo "Installing pyenv..." 5 | git clone https://github.com/yyuu/pyenv.git ~/.pyenv 6 | 7 | # set variables 8 | export PYENV_ROOT="$HOME/.pyenv" 9 | export PATH="$PYENV_ROOT/bin:$PATH" 10 | export PATH="$HOME/.pyenv/bin:$PATH" 11 | eval "$(pyenv init -)" 12 | 13 | # update .bashrc 14 | cat << 'END' >> ~/.bashrc 15 | 16 | # pyenv settings: 17 | export PYENV_ROOT="$HOME/.pyenv" 18 | export PATH="$PYENV_ROOT/bin:$PATH" 19 | export PATH="$HOME/.pyenv/bin:$PATH" 20 | eval "$(pyenv init -)" 21 | 22 | END 23 | 24 | # install python and virtualenv 25 | echo "Installing python..." 26 | pyenv install 3.6.1 27 | pyenv install 3.5.3 28 | pyenv install 3.4.6 29 | pyenv install 3.3.6 30 | pyenv install 2.7.13 31 | pyenv global 3.6.1 3.5.3 3.4.6 3.3.6 2.7.13 32 | pip install --no-cache-dir --upgrade pip 33 | pip install --no-cache-dir virtualenv 34 | echo "pyenv has been installed with python 3.5.1 and virtualenv" 35 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### JetBrains template 3 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm 4 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 5 | 6 | # User-specific stuff: 7 | .idea/workspace.xml 8 | .idea/tasks.xml 9 | .idea/dictionaries 10 | .idea/vcs.xml 11 | .idea/jsLibraryMappings.xml 12 | 13 | # Sensitive or high-churn files: 14 | .idea/dataSources.ids 15 | .idea/dataSources.xml 16 | .idea/dataSources.local.xml 17 | .idea/sqlDataSources.xml 18 | .idea/dynamic.xml 19 | .idea/uiDesigner.xml 20 | 21 | # Gradle: 22 | .idea/gradle.xml 23 | .idea/libraries 24 | 25 | # Mongo Explorer plugin: 26 | .idea/mongoSettings.xml 27 | 28 | ## File-based project format: 29 | *.iws 30 | 31 | ## Plugin-specific files: 32 | 33 | # IntelliJ 34 | /out/ 35 | 36 | # mpeltonen/sbt-idea plugin 37 | .idea_modules/ 38 | 39 | # JIRA plugin 40 | atlassian-ide-plugin.xml 41 | 42 | # Crashlytics plugin (for Android Studio and IntelliJ) 43 | com_crashlytics_export_strings.xml 44 | crashlytics.properties 45 | crashlytics-build.properties 46 | fabric.properties 47 | 48 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Ubuntu Development Tools Install Script 2 | 3 | ## What is this? 4 | I started this project because I was fed up of wasting hours or even days for configuring a new machine for web development after installing Ubuntu. 5 | The goal of this project is to provide a way to setup the development environment by launching only a single script. 6 | 7 | ## Usage 8 | There are several bash scripts organized by category: 9 | 10 | - **languages**: these scripts install programming languages (Java, Python, Node...) and their related tools (npm, pip...) 11 | - **db**: these scripts install databases (Postgresql, MySql...) and their related tools like management GUIs 12 | - **tools**: these scripts install development tools (like Docker) 13 | - **aliases**: these scripts add useful aliases to .bashrc (like shortcuts for apt-get commands) 14 | - **extra**: these scripts install tools to customize the GUI and behaviour of Ubuntu 15 | - **core.sh**: this script installs libraries required to compile/run/versioning code 16 | 17 | It's possible to install only the required software by running the specific script (in this case **core.sh** should be launched before), or to install all by running: 18 | 19 | `sudo sh install-all.sh` 20 | -------------------------------------------------------------------------------- /src/core.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Installing core development libraries (a lot of stuff :P)..." 4 | apt-get update && apt-get upgrade 5 | apt-get install -y make \ 6 | build-essential \ 7 | software-properties-common \ 8 | linux-headers-$(uname -r) \ 9 | linux-image-extra-$(uname -r) \ 10 | linux-image-extra-virtual \ 11 | libssl-dev \ 12 | libffi-dev \ 13 | zlib1g-dev \ 14 | libbz2-dev \ 15 | libreadline-dev \ 16 | libsqlite3-dev \ 17 | llvm \ 18 | libncurses5-dev \ 19 | libncursesw5-dev \ 20 | unixodbc \ 21 | unixodbc-dev \ 22 | libaio1 \ 23 | freetds-bin \ 24 | freetds-dev \ 25 | tdsodbc \ 26 | alien \ 27 | apt-transport-https \ 28 | ca-certificates \ 29 | git \ 30 | virtualbox \ 31 | virtualbox-ext-pack \ 32 | virtualbox-guest-additions-iso \ 33 | virtualbox-guest-dkms \ 34 | virtualbox-guest-source \ 35 | virtualbox-guest-utils \ 36 | virtualbox-guest-x11 \ 37 | automake \ 38 | autoconf \ 39 | pkg-config \ 40 | libgtk-3-dev \ 41 | libtiff5-dev \ 42 | libjpeg8-dev \ 43 | zlib1g-dev \ 44 | libfreetype6-dev \ 45 | liblcms2-dev \ 46 | libwebp-dev \ 47 | tcl8.6-dev \ 48 | tk8.6-dev \ 49 | python-tk \ 50 | python-dev \ 51 | vim \ 52 | curl \ 53 | nano \ 54 | members \ 55 | exfat-utils \ 56 | exfat-fuse \ 57 | unrar \ 58 | mcelog \ 59 | net-tools 60 | 61 | # enable syntax highlighting for all the available languages 62 | find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc 63 | 64 | echo "A lot of libraries have been installed for you :)" 65 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # ChangeLog 2 | 3 | ## 0.3.0 4 | 5 | ### core.sh 6 | 7 | Added `members` package 8 | 9 | ### aliases 10 | 11 | - **apt.sh**: 12 | 13 | Added `aptl` to list installed packages (`apt list --installed`) 14 | 15 | ### tools 16 | 17 | - **docker.sh**: 18 | 19 | Fixed: current user is now properly added to the "docker" group 20 | 21 | 22 | ## 0.2.0 23 | 24 | ### core.sh 25 | 26 | Added command to enable syntax highlight for nano 27 | 28 | ### languages 29 | 30 | - **javascript.sh** 31 | 32 | Fixed NVM installation (now use git to download the latest available version) 33 | 34 | ### apps 35 | 36 | - Removed apps installation (chrome) 37 | 38 | 39 | ## 0.1.1 40 | 41 | ### aliases 42 | 43 | - **apt.sh**: 44 | 45 | `apts` now search in package names only (`apt-cache search --names-only`) 46 | 47 | ### languages 48 | 49 | - **python.sh**: 50 | 51 | added flag `--no-cache-dir` for pip installations 52 | 53 | ### tools 54 | 55 | - **docker.sh**: 56 | 57 | added "docker-compose" and "docker-registry" 58 | 59 | ### core.sh 60 | 61 | added "libffi-dev" and "python-dev" 62 | 63 | 64 | ## 0.1.0 65 | 66 | ### aliases 67 | 68 | - **generic.sh**: 69 | 70 | `documents` -> `cd ~/Documents` 71 | 72 | `downloads` - > `cd ~/Downloads` 73 | 74 | `desktop` -> `cd ~/Desktop` 75 | 76 | `music` -> `cd ~/Music` 77 | 78 | `pictures` -> `cd ~/Pictures` 79 | 80 | `videos` -> `cd ~/Videos` 81 | 82 | `media` -> `cd /media/$(whoami)` 83 | 84 | - **apt.sh**: 85 | 86 | `apti` -> `sudo apt-get install -y` 87 | 88 | `aptr` -> `sudo apt-get remove` 89 | 90 | `aptp` -> `sudo apt-get purge` 91 | 92 | `aptu` -> `sudo apt-get update` 93 | 94 | `apts` -> `apt-cache search` 95 | 96 | - **docker.sh**: 97 | 98 | `dops` -> `docker ps -a` 99 | 100 | `doim` -> `docker images` 101 | 102 | `doip` -> `docker-machine ip default` 103 | 104 | ### apps 105 | 106 | - **chrome.sh**: Installs Google Chrome stable 107 | 108 | ### db 109 | 110 | - **mysql.sh**: Installs MySql 5.7 111 | - **postresql.sh**: Installs Postgresql 9.5 and pgAdmin 3 112 | 113 | ### extra 114 | 115 | - **uicustomization.sh**: Installs "Unity Tweak Tool", "Compiz Config Settings Manager" + plugins, "Arc" theme, "MyElementary" icons 116 | 117 | ### languages 118 | 119 | - **java.sh**: Installs Oracle Java 8 120 | - **javascript.sh**: Install NodeJS (using NVM), npm, bower, gulp, grunt, phantomjs 121 | - **python.sh**: Install and set as default (using pyenv) Python 3.5.1, virtualenv and pip 122 | 123 | ### tools 124 | 125 | - **docker.sh**: Installs and configure Docker 126 | --------------------------------------------------------------------------------