Folks,
I just wanted to share my experience of the weekend installing NixOS inside Bluefin-DX.
Yesterday I was exploring what was all fuzz about Nix and NixOS. Initially very difficult to understand and digest because almost nobody share practical use cases. Browsing after browsing I finally landed on a page in reddit with a link to an interview to Mitchell Hashimoto. And he is simply b.r.i.l.l.i.a.n.t. He has found a way to create a reproducible development environment by nesting NixOS within a macOS laptop. Link here. NixOS is installed as a VM with Fusion.
He showed a gist of his development workflow and truly is impressively reproducible. He did something on the screen that I couldn’t believe it was possible doing: installing a package, application, or binary is really defined down to the core of the operating system. He had a single file where he defined low level stuff like booting, disk options, desktop manager, audio, etc.; as well what applications will be installed for you ideal OS.
This means three things: (i) the whole operating system is defined with all its applications from the boot instance through a simple script; (ii) since the application, packages and binaries are spelled out in a script the whole development environment is fully reproducible under any Linux or Unix-based operating system; (iii) you share with your team the whole OS definition instead of just a container or image; (iv) your productivity goes to the roof because your operating system is not only stable but reproducible as well, with the additional advantages of being able to create isolated environments via Nix.
But nothing beats a hands-on experience. I downloaded a NixOS ISO with graphical installation and installed it on top of my Bluefin-DX using tools already available: QEMU and Virtual Machine Manager. The installation was painless, NixOS boots quick as a virtual machine. No hiccups there. Once you log in the adventure starts.
Now what? I said. It is just another OS. The thing starts becoming clearer as you start installing applications. Yes, of course, you can install flatpak. But the ground breaking stuff is indicating the packages you need inside /etc/nixos/configuration.nix
, then update, and reboot. Then, all the applications come alive in your dock.
Specifying applications
I made the experiment installing Firefox, Brave, Edge, Gnome Tweaks, and the extension Dash-to-Dock. It is flawless. All these applications, binaries and services live in repositories.
Specifying extensions
So, if I want to share my whole OS with you, I just sent you a script. That’s it!
If I make a mistake during the installation or settings, just revert to the previous version.
And this is just the OS I am talking about. On top of NixOS we have the reproducible packages, flakes and whatnot.
Bluefin-DX, and NixOS as a VM, make an amazing combination. Reproducible within Immutable.
Disclaimer: I am not a professional developer or programmer; maybe your occasional data scientist applying machine learning and profoundly enthusiast AI engineer. I am seeking for the holy grail of a fully reproducible development environment for artificial intelligence that includes from machine learning to natural language processing, object recognition, robotics. knowledge expert systems up to decision making, logic and planning.
NixOS desktop via Virtual Manager
Time at which Mitchell starts talking about his NixOS VM