Setting up a new developer machine can be an ad-hoc, manual, and time-consuming process. dev-setup
aims to simplify the process with easy-to-understand instructions and scripts to automate the setup of the following:
- Developer tools: git, Node.js, Docker, etc
- Developer apps: Google Chrome, Visual Studio Code, Postman, Sky for linux, VLC, Spotify etc
- Data Science Tools: Anaconda Distribution etc
- Common data stores: Redis, MongoDB etc
- Big Data platforms: (...Under Development)
- Utilities: xpad, Redshift, Terminator, Vim Editor, Safe Eyes etc
- Libraries: thefuck, beautysh, kaggle api etc
- Miscellaneous: (...stuff that will fix minor annoyances with ubuntu and make ubuntu great again)
- Bash Customizations: Prompt String Customization, Some General Bash Alises etc
dev-setup
is geared to be more of an organized reference of various developer tools.
You're not meant to install everything.
If you're interested in automation, dev-setup
provides a customizable setup script. There's really no one-size-fits-all solution for developers so you're encouraged to make tweaks to suit your needs.
Credits: This repo builds on the awesome work from Donne Martin who built the similar thing for Mac OS X Environment, the repository of which is donnemartin/dev-setup.
- Section 1 contains the scripts and instructions to set up your system.
- Sections 2 through 11 detail more information about installation, configuration, and usage for topics in Section 1.
Scripts tested on Ubuntu 18.04
- Single Setup Script <- Click here to jump to installation.
- devtools.sh script
- Sets up Tools and Programming languages geared towards s/w development- See List
- devapps.sh script
- Sets up Applications which are must for any developer to make Software Developent convenient and enjoyable- See List
- datasciencetools.sh
- Sets up tools geared towards Data Science- See List
- datastores.sh script
- Sets up common data stores- See List
- utils.sh script
- Sets up must-have utilities- See List
- libraries.sh script
- Sets up some essential libraries- See List
- miscellaneous.sh script
- Sets up Tweaks and Themes- See List
- bashcustomizations.sh script
- Sets up some cool bash customizations- See List
This section is under development.
$ sudo apt-get update && cd ~ && git clone https://github.com/naushads/dev-setup.git && cd dev-setup
Since you probably don't want to install every section, the main.sh
script supports command line arguments to run only specified sections. Simply pass in the scripts that you want to install. Below are some examples.
For more customization, you can clone or fork the repo and tweak the main
script and its associated components to suit your needs.
Run all:
$ bash main.sh all
Run devtools.sh
and utils.sh
:
$ bash main.sh devtools utils
$ sudo apt-get update && sudo apt-get install curl && cd ~ && mkdir -p dev-setup && cd dev-setup && curl -#L https://github.com/naushads/dev-setup/tarball/master | tar -xzv --strip-components 1 --exclude={README.md,LICENSE}
$ bash main.sh [Add ARGS Here]
- main
- Runs specified scripts
- devtools.sh
- Sets up Tools and Programming languages geared towards s/w development- See List
- devapps.sh
- Sets up Applications which are must for any developer to make Software Developent convenient and enjoyable- See List
- datasciencetools.sh
- Sets up tools geared towards Data Science- See List
- datastores.sh
- Sets up common data stores- See List
- utils.sh
- Sets up must-have utilities- See List
- libraries.sh
- Sets up some essential libraries- See List
- miscellaneous.sh
- Sets up Tweaks and Themes- See List
- bashcustomizations.sh
- Sets up some cool bash customizations- See List
Notes:
main.sh
will initially prompt you to enter your password.main.sh
might ask you to re-enter your password at certain stages of the installation.- If ubuntu(linux) updates require a restart, simply run
main.sh
again to resume where you left off. main.sh
runssudo apt-get update
command, which takes a while to complete as some libraries need to be installed before proceeding.- When
main.sh
completes, be sure to restart your computer for all updates to take effect.
To set up developer tools, run the devtools.sh
script:
$ ./devtools.sh
To set up developer apps, run the devapps.sh
script:
$ ./devapps.sh
To set up developer apps, run the datasciencetools.sh
script:
$ ./datasciencetools.sh
To set up common data stores, run the datastores.sh
script:
$ ./datastores.sh
To set up utilities, run the utils.sh
script:
$ ./utils.sh
To set up utilities, run the libraries.sh
script:
$ ./libraries.sh
To set up utilities, run the miscellaneous.sh
script:
$ ./miscellaneous.sh
To set up utilities, run the bashcustomizations.sh
script:
$ ./bashcustomizations.sh
Git is a version-control system for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for source-code management in software development, but it can be used to keep track of changes in any set of files.
The devtools.sh script installs Git.
Node.js is an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser.
The devtools.sh script installs Node.js.
Docker automates the deployment of applications inside software containers. I think the following quote explains docker nicely: "Docker is a tool that can package an application and its dependencies in a virtual container that can run on any Linux server. This helps enable flexibility and portability on where the application can run, whether on premise, public cloud, private cloud, bare metal, etc".
The devtools.sh script installs Docker.
Google Chrome is the most popular web browser from the house of google inc.
The devapps.sh script installs Google Chrome.
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.
The devapps.sh script installs Visual Studio Code.
Postman makes API development faster, easier, and better.
The devapps.sh script installs Postman.
Sky For Linux is an unofficial client for skype for business.
The devapps.sh script installs Sky For Linux.
VLC Media Player is a free and open-source, portable, cross-platform media player and streaming media server.
The devapps.sh script installs VLC Media Player.
Spotify Spotify is a digital music streaming service that gives you access to millions of songs and curated playlists.
The devapps.sh script installs Spotify.
Anaconda Distribution is a free, easy-to-install package manager, environment manager and Python distribution with a collection of 1,000+ open source packages provided by Continuum Analytics.
The datasciencetools.sh script installs Anaconda Distribution.
Redis is a blazing fast, in-memory, key-value store, that uses the disk for persistence. It's kind of like a NoSQL database, but there are a lot of cool things that you can do with it that would be hard or inefficient with other database solutions. For example, it's often used as session management or caching by web apps, but it has many other uses.
The datastores.sh script installs Redis.
MongoDB is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemata.
The datastores.sh script installs MongoDB.
This section is under development.
Xpad is a sticky note application for jotting down things to remember.
The utilities.sh script installs Xpad.
Redshift adjusts the color temperature of your screen according to your surroundings. This may help your eyes hurt less if you are working in front of the screen at night.
The utilities.sh script installs Redshift.
Terminator is a useful tool for arranging terminals. The main focus is arranging terminals in grids.
- Features:
- Arrange terminals in a grid
- Tabs
- Drag and drop re-ordering of terminals
- Simultaneous typing to arbitrary groups of terminals
- Lots of keyboard shortcuts
- Save multiple layouts and profiles via GUI preferences editor
The utilities.sh script installs Terminator.
Vim Editor is a highly configurable text editor for quickly and efficiently creating and changing any kind of text.
The utilities.sh script installs Vim Editor.
Safe Eyes is a Free and Open Source tool for Linux users to reduce and prevent repetitive strain injury (RSI).
- Features:
- Breaks with exercises: The whole purpose of Safe Eyes is reminding you to take breaks while working on the computer for a long time. The break screen asks you to do some exercises which will reduce your RSI.
- Strict break for workaholics: Strict break mode prevents computer addicts from skipping breaks unconsciously. In skip break mode, the user cannot skip or postpone the break.
- Multi-display support: Workstations with dual monitors are cool to have but Safe Eyes locks all at the same time to relax your eyes during the break.
- Notifications: Safe Eyes shows a system notification before breaks and an audible alert at the end of breaks. Even if you are few steps away from your computer, you can hear the call for back to work.
- Smart decisions: If you are working with a fullscreen application, Safe Eyes will not bother you. It also can sense if your system is idle and postpone the break based on idle period.
The utilities.sh script installs Safe Eyes.
thefuck is an app which corrects your previous console command.
The libraries.sh script installs thefuck.
beautysh is a bash beautifier.
The libraries.sh script installs beautysh.
Kaggle API - Official API for https://www.kaggle.com to connect with Kaggle from command line.
The libraries.sh script installs and configures kaggle api.
Ubuntu Tweaks - See for yourself
The miscellaneous.sh script configures tweaks.
A cool looking command prompt string which shows current branch name if in git repository folder which looks something like this.
The bashcustomizations.sh script configures prompt string.
Aliases for some commonly used command
The bashcustomizations.sh script configures bash aliases.
Bug reports, suggestions, and pull requests are welcome!
See the Credits Page.
Feel free to contact me to discuss any issues, questions, or comments.
My contact info can be found on my GitHub page.
This repository contains a variety of content; some developed by Naushad Shukoor; some developed by Donne Martin.
The content developed by Naushad Shukoor is distributed under the following license:
MIT License
Copyright (c) 2018 Naushad Shukoor
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
The content developed by Donne Martin is distributed under the following license:
Copyright 2015 Donne Martin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.