Not-OS – NixOS-based OS generator that outputs an OS with 47MB squashfs (2022)
github.com
github.com
Cool to see his work show up here. :)
Fans of slimmer and systemd-less spinoffs of NixOS should perhaps also check out NixNG: https://github.com/nix-community/NixNG
So a primary difference from NixNG is that not-OS has a kernel and initial RAM disk, making it viable for running on hardware? The sparse README says it's for "embedded" purposes, but I'm struggling to understand the value of Nix here if the whole filesystem is read-only — you'd be working entirely off the RAM disk?
Other embedded filesystem image generation I'm aware of (like android?) require a huge swath of software and dependencies installed, byzantine build systems, star alignment, etc. Or emulation and shell scripts with timing issues, limited failure recovery/idempotency.
What does it use in alternative?
The answers are in the source, though.
The author has game related repos on GH and I speculate a usage they are considering is to setup an emulation station.
> runit is a cross-platform Unix init scheme with service supervision, a replacement for sysvinit, and other init schemes.
Slurm now supports OCI images and creating them completely from nixpkgs in an automated system would pair very well.
NixOS as a desktop and hoping this reduces your complexity is the technological equivalent to making planes out of straw and hoping for cargo drops.
But, I think that discounts the value of enthusiastic tinkering, and learning a complicated technology.
Nix is unusual and relatively difficult. This makes it difficult to recommend in many settings. But, if you're interested in learning it, spending time to try it out as a personal desktop (where there aren't external deadlines or requirements of reliability) is a decent way to explore it.
It's similar to how vim or emacs have a steeper learning curve than vscode. It takes more effort, but you get a power-user experience out of it.
I was originally interested in Nix and NixOS on servers, and started running it on my main desktop at work in order to force myself to really learn it, as a way of jumping in with both feet.
I think it worked well, and I ended up really enjoying it.
Idk that running NixOS is about 'reducing complexity' per se, but I will say this:
Using NixOS feels a lot less chaotic than using most desktop operating systems. It's a very predictable experience, There are ways that it spares me worries and mental effort, in the way I use it every day. Managing software in other ways has become frustrating for me by comparison.
For some people, it's a really good fit on the desktop. People don't stick with it for years on their desktops and laptops just to punish themselves. How that hashes out in terms of 'complexity' is beside the point, imo.
But try to compile and run a random C program you found on the internet on NixOS and that complexity immediately becomes apparent. Because there is no "system library" set for NixOS you have to create the environment needed for every single thing you do. If it is a very popular thing than someone else will have done it. If it is not, as is the case in most situations, you end up having to create the environment yourself via config. A huge extra layer of complexity and work before you even begin to attempt compiling.
So for me, NixOS doesn't add too much complexity because my minimal complexity commitment is covers much of what NixOS 'adds' anyway. But this story:
> If you only use things people already created environments for it's pretty great.
doesn't end at that layer, and in fact it essentially recurs deeper down!
When it comes to packaging with Nix or crafting environments, what's popular is usually easy, and what's easy is really easy.
But when you go off the beaten path... you're going on a journey. Maybe a short one, but possibly a long and painful one.
For me, Nixpkgs and NixOS have grown so much since I first started running NixOS on desktop (like 8 years ago, now!) that such work is rare enough for me that I hardly think about it. But you're quite right that the additional complexity is there, and it can be discouraging and draining when setting up software environments in that way is new to you, or when you just don't wanna do it.