From WSL2 to Pop!_OS - My Full Linux Experience Journey
Tags: productivity, linux, tooling
Published: 2022-01-28 12:57:52

Salam and good day everyone! Whew, after a 2-month hiatus, I start again with different thing from coding, and this time it is about me from depending a lot on WSL2 on Windows 10, to a full Linux experience using Pop!_OS 20.04, a debian-based Linux distro.

---

## Previous Workflow - WSL2

Most of us are extremely familiar with Windows, and currently at Windows 11 with a lot of features. Though, my machine cannot upgrade from Windows 10 for incompatibility (yeah, I know there is workaround).

As most of you knew, my works are mostly revolves around Javascript and NodeJS, and a bit touch of other things. However, there are tools that I have been used to this day that requires Linux, especially Docker, to experience most of the full capability. And so, I have been using WSL2 for 2 years now. Setting my developer experience around WSL2 has been a journey as well, including setting up terminals, VSCode and others.

As you might think, why didn't I just move to Linux distro fully earlier? Well, there are several reasons that didn't convince me that much:
- I rely really much on Microsoft services, such as Office 365.
- There are softwares which I used that requires a non-Linux environment.
- My gaming-ass is really not sure whether Linux can really handle game really much, though I know that ProtonDB can do that much.
- And of course, not mentally ready 😅

Then, what makes me to move now?
- Windows 10 really demands a lot of my graphic capability (well, so many unnecessary services).
- I have make myself less dependent to Window-related services and softwares (since now design works can be done online).
- Peer pressure. Yes, peer pressure!

---

## Time to move out

And so, this week, I decided to move to a friendly distro, Pop!_OS 20.04, since I used Ubuntu 20.04 on top of my WSL2 previously. Well, I know most of the CLI already, so I expect a smooth transition from WSL2 to Pop!_OS. And so, here is what I did.

1) Download Pop!_OS image from [Pop!_OS by System76](https://pop.system76.com/). I choose the image with the NVIDIA drivers.

![Pop!_OS website](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vyce6nhchqmafrn5l8.png)

1.1) Optionally, you can verify the image by running CertUtil.

```bash
// For Intel/AMD
CertUtil -hashfile Downloads\pop-os_21.04_amd64_intel_7.iso sha256

// For NVIDIA
CertUtil -hashfile Downloads\pop-os_21.04_amd64_nvidia_7.iso sha256
```

2) To set up bootable USB, I used balenaEtcher, which can be downloaded from [balena website](https://www.balena.io/etcher/).

![balena Etcher](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9yac2uo3y0nax7stb548.png)

3) Just open balenaEtcher, choose the image, and choose your bootable drive to be used later.

...and there, you have a bootable drive with Pop!_OS ready for you!

And from Windows 10, you need to check out several things:

1) You have to turn of Secure Boot so Linux can access the kernel. To do that, you have to go to bios menu.

Click Windows, and find "Advanced Startup" or find it on Settings > Update & Security > Recovery. Then, click "Restart Now"

2) After your laptop restarts and Advanced Options appears, choose Troubleshoot > Advanced Options > UEFI Firmware Settings. Later, you will be brought to the bios menu.

![Advanced Startup - UEFI Firmware](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1vxxrut5dm50w96597q4.jpg)

3) Go to Security tab, and you will find the option for Secure Boot. Go ahead and disable it.

4) Save changes and restart. Don't forget to make sure that your bootable device is being boot and not your Windows 10.

...and that's it!

Let say, you still have doubts, just install the demo version. But why demo, when you can go all the way?

---

## The First Light of Pop!_OS

Well, my first experience is quite good, where I experience way less disturbance and way better graphic performance. The great plus to the beauty of Pop!_OS, I really enjoy the experience!

<blockquote class="twitter-tweet" data-conversation="none" data-theme="dark"><p lang="und" dir="ltr"><a href="https://t.co/IZVI1sqdDN">pic.twitter.com/IZVI1sqdDN</a></p>&mdash; Atif al-Serembani（あチップ) (@alserembani) <a href="https://twitter.com/alserembani/status/1486640683104411650?ref_src=twsrc%5Etfw">January 27, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

---

## Time for Productivity

And so, I have to set up my workspace, of course! The tools that I need:
- VSCode
- Steam (with Dota 😖, apology for my gamer side)
- Discord
- Equaliser (yeah, I am audiophile)
- Customise my terminal - PowerLevel10K

### 1. VSCode

You can head to Pop!_Shop, and find VSCode, and make sure you use Pop!_Shop version and not flakpak, since it is buggy.

![VSCode on Pop!_Shop](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lop87tp4udm0oxq928ls.png)

Since I have my VSCode Sync on, I got all my goodness from my previous configurations, including font ligatures etc.

### 2. Steam

You can head to Pop!_Shop, and find Steam. And of course, Pop!_Shop version as well! But beware, that only some of the games compatible with Linux.

![Steam on Pop!_OS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hs4k4oa4baoch8dwujz1.png)

### 3. Discord

I love to communicate through Discord, especially when I want to build a community at my locals. Just head to Pop!_Shop, and you know the drill!

![Discord on Pop!_OS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bnshq0xpv60d60ik6qkw.png)

### 4. Equaliser

I love to listen to music while I code, and I love to customise my experience. So I choose PulseEffects.

![PulseEffects on Pop!_OS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7n927yd10dy8hmhys1ga.png)

### 5. Customising Terminal!

Well, this is the time, I kept seeing tutorial with beautiful terminal, so I want to experience one! So here is my step:

a) Install `zsh`. Some of distro already has `zsh`. If not, then you can just head to your terminal and install zsh.

```bash
sudo apt install zsh
```

b) Install Oh My Zsh.

```bash
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

If you can see the rainbow, that means you successfully install Oh My Zsh.

c) Add PowerLevel10K theme!

First, you need to clone the theme to be added to Oh My Zsh.

```bash
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
```

Then, you need to change the `~/.zshrc` that contains all configuration of your `zsh`. Set `ZSH_THEME="powerlevel10k/powerlevel10k"`

![Edit ~/.zshrc](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wuccsl1zkt8loucoh4t9.png)

d) Configure your PowerLevel10K theme.

For the first time, you can enter this in your terminal.

```bash
p10k configure
```

Then, you will be guided through the configuration to your taste. For further settings, you can edit `~/.p10k.zsh` later on.

e) Additionally, `zsh` cannot detect my NVM, and so I added yet another plugin, which is called `zsh-nvm`. First, clone `zsh-nvm`

```bash
git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm
```

Then, add the `zsh-nvm` and also `git` plugin to your `~/.zshrc`.

```
plugins=(
  git
  zsh-nvm
)
```

![zsh plugins](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6fzme1iyyroidfinb8ks.png)

And here, is my result!

![alserembani Terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjfih6fuxtvmly78b0ee.png)

Cool, right?!

---

## Future Possibility

Someone teases me that I will be distro hopping sooner or later and ended up using Arch. Well, who knows, right?

Moving forward, I will learn a lot more, and increases my productivity even further, especially learning Docker and Kubernetes (for serious this time 😅). Pray for my future endeavours!

And thanks for the read. Adios and peace be upon ya'll!