My journey in NixOS land

· GrizzlT's blog!

My entire development journey from knowing nothing about NixOS to making it my main OS.

My journey in NixOS land #

What follows is the story of how I got interested in Nix, NixOS, reproducible builds and declarative configurations.

How I switched from Apple to Linux and made my data much more resilient.

It's a story that takes a while to go through but is full of wonder, excitement and clicking on too many articles at the same time.

1. Once upon a time... #

A really long time ago my dad used to have a laptop with Linux installed. I think he used Ubuntu at the time. I only remember glimpses of the wallpaper and the few games I used to play on there. From most of what I can remember though, me and my dad have always used Apple products.

This means that I had the "fortune" of growing up with Unix (which is really awesome honestly). I developed an interest in programming and computer science and that brings me to studying engineering at present day.

And I've definitely been interested a lot: so far I've played with a few programming languages, tried out Docker, forced myself to use git as much as possible, fell in love with Rust (yep, I'm a rustacean), worked way too little on security measures and became part of the "Neovim over Emacs" party (although I have to admit that's mostly because I'm too scared of trying out Emacs).

As time went on I've kept reading linux articles, got myself an oracle cloud free tier instance and kept a few services running on there. I also started the rather ambitious FalconMC project around that time. And even though my dad had a few websites running on drupal, I got introduced to web services and server administration rather late. It took me a lot of time to understand how servers and the internet somewhat work (and to be honest, I still don't think I do).

And that brings me to today. I want to experiment with Linux even more! I want to see how people can make it their main workstation. How I can make it my main workstation. I've spent a lot of time preparing to make the switch from Apple to Linux and I'm excited to share the process with you!

2. There was an old computer... #

The Macbook Pro I've been using until this day is now 7 years old since its release. So why not treat myself after some good exams with a new laptop I can use for the foreseeable future? The biggest struggle with Apple for me is its price. I'd like a bit more RAM and disk storage while keeping the budget low. But I definitely don't want to change to Windows. Besides growing up with Apple, I do like FOSS and the privacy I can get out of it. And as fate would allow, I'm already interested in Linux anyways! Let me get myself a new Linux laptop!

So my current laptop is from 2016, it's got 8 GB of RAM and 512 GB of SSD storage. With its 6th gen intel processor it's served me really well the past few years. I certainly have great memories of time lost on the many bugs and issues I conquered but it's time to move on. With newer processors and memory-hungry software I need an upgrade. My eyes fell on a Clevo laptop. One with 32 GB RAM and 1 TB of SSD storage. I think that upgrade will last me a few years easily.

3. Almost falling apart... #

I've reached a point where I don't know anymore what is and what is not on my computer. And that's quite the problem if you ask me. It means I can't just wipe out my machine and get rid of used up storage. I also won't be able to accidentally remove viruses that way. So I went on a huge search across duckduckgo (and many github projects haha) to find remedies for this problem.

And since I'm changing such a fundamental part of my workflow (a whole computer), why not go that extra mile and do a full makeover? Here's a list of everything I want my new system to be able to do:

...

Is this everything? Hmmm, I doubt it. But I'll update this list when I think of the stuff I'm missing! If you ask me, that's stil a lot. It just feels like I would get in the same situation on Linux as I am in right now on OSX: configs and program files lost in the file system. But luckily, I found a remedy: I found NixOS! Being an immutable system and having a declarative configuration sounds incredibly promising!!

As a disclaimer though, I must say I have yet to use NixOS so before I say that NixOS is awesome, I'll have to play around with it first.

But let's get into the real stuff, the thing that set this whole story off.

4. But NixOS arrived to save the day... #

I have waited for a little over a month and a half to try out NixOS. I mostly read a ton of blog posts and wiki articles about Nix, the package manager, instead of NixOS since these two are closely related. And because I don't trust myself just yet to go all technical so I'll make a list below with resources that helped me tremendously at understanding Nix (which I'll update over time over course).

From what I've read, I think NixOS is gonna make my life a lot easier, it definitely has me falling head over heels ;-). To not make this blog too long however, I'll split up every interesting part of my NixOS configuration into separate blog posts and keep an updated outline below. First part tomorrow when I receive my new laptop!!

To be continued...