DEV Community

Daniel Mgbechi
Daniel Mgbechi

Posted on

I Installed Linux on 2 of My 3 Machines. Here is the Good, the Bad, and the NPM Ugly.

Starting a new journey can be messy, especially when you are a frontend developer accustomed to a specific workflow. Recently, I decided to take the leap and transition to Linux. I didn’t just dip my toes in, though. I went ahead and installed it on two out of my three machines.

It has been an incredibly fun experience, but as with any OS migration, it came with its own set of quirks, restrictions, and configuration headaches.

If you are thinking about making the switch, or if you just want to laugh at my initial struggles, here is how the migration went.

The Setup: Two Machines, Two Distros
I didn't want to commit 100% blindly, so I kept one machine on my old setup and split the other two between two very different Linux distributions: MX Linux and Linux Mint (Cinnamon).

Here is how they stacked up:

  1. MX Linux: The Secure Vault MX Linux is fast and lightweight, but it caught me off guard with its security posture.

The Experience: It feels incredibly snappy.

The Catch: I quickly ran into its strict file-receiving restrictions. If you are used to freely moving files across networks or external drives without thinking twice, MX Linux will make you work for it. It forces you to be highly intentional about permissions and file sharing, which is great for security but a bit of a hurdle for a fast-paced dev workflow.

  1. Linux Mint (Cinnamon): The Smooth Operator If you want an experience that just feels "nice" and instantly enjoyable, Linux Mint with the Cinnamon desktop environment is incredible.

The Experience: The UI is clean, familiar, and highly intuitive. Navigating the system felt natural right out of the box.

The Catch: While the OS itself was smooth sailing, my development environment had other plans.

The Ultimate Boss Fight: NPM vs. React on Mint
As a frontend dev, the very first thing I did after setting up Linux Mint was spin up my React projects. That is when the chaos started.

I ran into a massive wall of npm issues and permission errors while trying to get my local development server running. If you've ever seen a wall of red terminal text because node_modules refused to cooperate, you know the feeling.

How I Fixed It
Most of the issues stemmed from node permissions and outdated package managers bundled with the OS repository. Here is how I got everything running smoothly:

Switched to NVM (Node Version Manager): Instead of installing Node directly via apt, I cleaned everything out and used NVM. This completely bypasses the need for sudo npm install, which is a massive security risk and the root cause of most directory permission errors on Linux.

Global Permissions Fix: I reconfigured my global npm directory to live in my home folder, ensuring that I never have to prefix an npm command with sudo again.

Cleared the Cache: A quick npm cache clean --force followed by a fresh npm install on my projects finally brought the green success messages back to my terminal.

My Verdict
Switching to Linux isn’t about finding a perfect, flawless operating system. It’s about building a better, more customizable system for your workflow.

MX Linux taught me to pay closer attention to file architecture and security.

Linux Mint gave me a beautiful, productive environment, even if I had to debug some dependency architecture along the way.

As developers, we don't just ship version 1.0 of our environment and stop. We iterate, we debug, and we optimize. This migration was just the first step. Now, it's just left for me to explore.

Are you developing on Linux? What distro are you using, and what is your absolute favorite workflow optimization? Let’s talk in the comments!

Linux #OpenSource #WebDev #React

Top comments (0)