Setting up a new Linux distro (within Windows)
Tags: linux, terminal, configs
Published: 2020-09-03 21:14:59

---
title: Setting up a new Linux distro (within Windows)
published: true
description: Going from zero to having a fully working and configured Linux distro inside Windows.
tags: #linux #terminal #configs
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/9kjb776akbp1tl6dbz7v.png
---
Hey friends!

Welcome back to another article.

This time, I want to write about a situation that happened to me about a week and a half ago with the development environment on my work laptop.

While initially I thought it was a "disaster" it eventually wasn't that bad still, I wouldn't wish it to any fellow developer.

When your development setup used for work eventually stops responding, and you have to do a full cleanup and reinstall of all the tools that you use for development purposes, it's not a fun thing to do.

But there's more than can be seen initially so let's dive in and see what turned out of this whole experience.

## Some background info

Because of work, I use a Windows machine, a Dell Latitude 7480 with Windows 10 Enterprise that lately got updated to the 19041 version.

I honestly never been a Windows type of guy. I've used Linux for most of my dev career since the first years in college. 
Only moved to Windows full time like 2 years ago or less I think.

Naturally, the Linux + Windows integration with WSL has been a godsend because I now have the best of both worlds. 

I can develop in a familiar Linux environment and have all my tools needed setup and then close the WSL terminal and be right back into Windows for personal uses.

It was going all good for the past year and a half, and then... 

![The fire nation attacked](http://www.quickmeme.com/img/d7/d72c5a7a6f455b666918be5883b14ea5a8ae8edf53a2e618df517f1861380e3b.jpg)

Well, it was the long-awaited release of WSL2 with a better internal architecture that doesn't just emulate a Linux environment but allows you to run a full native Linux experience whether you're running Ubuntu or Kali or Fedora or whatever else.

It has an all manner of good things going and improvements and such but there are also some incompatibilities in it.

The migration process wasn't all smooth sailing for me which lead to some unexpected behaviors initially and then became a full-on crash of my whole Ubuntu dev box.

I think on the upside, I didn't have much stuff that wasn't already in GitHub repos, and for the other files and folders that didn't have a backup, they were old stuff I had so I guess I won't be missing them much.

Now, after dealing with the issues of the Windows Subsystem and Docker for Windows on the startup, I went to reconfigure my whole dev setup on a fresh install of Ubuntu 20.04 LTS.

With some new tools, a few tips & tricks I found and doing some things right this time that I messed up in my previous distro.

Here are some of those things I did to get me up and running again developing web apps and other projects that I might want to get into in the future.

## Config overview

The version of Ubuntu I installed came with several tools I use already installed like Vim, Tmux, git, gpg, curl, htop, etc.

I additionally installed TPM, the Tmux plugin manager. NVM to manage the node versions. FZF which I found is a very cool fuzzy finder that works on the terminal and also in Vim.

And then I proceeded to do the Vim, Tmux and Git configs 

Redoing the configs made me realize that what I was working with before had very few optimizations and that I REALLY have to get to know my tools to be much more efficient than I've previously been.

That's the cool thing of always having something to learn and finding these little things we can do to give us an edge over others but mainly over our previous selves. Just a little bit better every day.

After all of that, then came the installation of NVM and the yarn package manager, which was pretty simple actually, and with that, I was pretty much ready to start cloning my repo and get on working with them.

The next thing was trying out the setup and find out what things were missing and what I could improve from the defaults also what things could be automated.

I never had any intentions to be super good at using the terminal or do any shell scripting at all. 

After all, I'm a UI developer so that's not within my domain... but still, I've always been fond of using the terminal mainly for git and because of Linux <3 hahaha.

I did found that there's a rabbit hole with these Shell and Vim customization's, but I didn't want to get myself lost in there cuz I already know myself and I can get very distracted with all sorts of stuff that are not necessarily the task at hand 😅

I have to say that the experience, even if a little difficult and time consuming, was worth it for all the things I learned in the process and maybe all the bits of niche knowledge that apply to the public using WSL2. 

Now with the use of both Vim and VSCode customized, I can get to a new level of productivity and personal efficiency in whatever tasks may lie ahead (or at least I want to think that.)

So yeah, as I said before, it wasn't that bad of a situation and gave the chance to practice some patience and calm among the stress and to rebuild a development environment in a much better way than it was before.

If you have read this far and have some tips and configs that you use to be more productive with the terminal or the environment in general, please let me know in the comments I appreciate any other tricks I can add to my book 😁

---

That was it for this week's post! 

As always, thanks a lot for reading so far and I hope to see you in the next one.