I keep experimenting with different operating systems and configurations on my personal laptop. While it's fun, sometimes it becomes daunting to set everything up again after a clean install. Since Ubuntu is the Operating system that I use the most, I thought of setting up an automated way of setting up Ubuntu so that I don't have to spend so much time on it every time.
Considering the solutions
- Bash scripting:
- One intuitive solution is using shell scripts to automate the whole setup.
- While this is useful for clean installations, it may happen that the script may fail at some time and you will have to run the whole script again, which is just a waste of time.
- Of course, you can comment out the part that is done, but that is just too much work.
- Ansible is a powerful tool used in DevOps and automation of large software systems on the cloud
- We can write modular code in Ansible, which I found to be very helpful
- It's very easy to understand, so is maintainable in case your project expands quickly
As mentioned earlier, I chose Ansible for this project. The complete code for this project can be found here: my-ubuntu-setup.
How to use
- Clone this project:
git clone https://github.com/manparvesh/my-ubuntu-setup
- Edit the
setup.ymlfile in this repository and un-comment all the items you want to install to your machine.
- While running on a fresh Ubuntu machine / VM, it's better to run
./run-allafter cloning this repository. If you have
gitinstalled, you can simply run
./runin the terminal.
- Probably need to change default shell manually, doesn't seem to work using ansible
- Set keyboard and mouse speeds from Universal access > Typing > repeat keys
- VSCode plugins and themes
- Material theme
- Markdown all in one
- LaTeX workshop
- sublime plugins and themes
- Materialize Appicons
- install gnome extensions
- Install jupyter notebook extensions
Things that you can install using this script
- deeplearning: deep learning setup for machines with GPUs
- nvdia GPU driver
- programming languages
- Ubuntu aliases
- text editors:
- sublime text
- web browsers
- google chrome
- jetbrains toolbox
- themes and stuff
- desktop themes
- gnome desktop
- snap store