NixOS is definitely a great operating system, but it's not for everyone. After having used NixOS for 500 days, today i discuss a few things that aren't quite right.
==== TIme Stamps ==== 0:00 500 days in 1:37 1. Documentation 3:17 2. Community support 5:10 3. Package stability 6:32 4. Stop calling it stable 8:06 5. Reusing your config on a new install 8:51 6. Leadership 9:54 7. Garbage collection 11:08 8. A YaST for NixOS 12:52 9. Build testing 14:21 10. Command structure 16:00 Wrapping up
After 500 days of using NixOS, the speaker evaluates the OS's strengths and weaknesses. While the system is powerful, the user experience is hampered by fragmented documentation, unstable package build processes, and a steep learning curve. The speaker advocates for better GUI tools, streamlined command structures, and more stable project leadership to make the OS more accessible.
So as of recording, I've been using NixOS for almost 500 days,
which is a crazy thing to say.
It feels like this NixOS challenge has just started, but it's been 477.
We're like a month
or so away from reaching that 500-day mark, and it's crazy.
Like, it's nuts.
For the people who told me that my first NixOS challenge was a sham,
I'm in full agreement with you.
I hardly did anything on that thing.
I didn't use it full-time.
My NixOS config was amateur at best.
I'm not saying that it's any better now.
But if you take a look at just the tree output
of my current NixOS configuration file,
which I'll put on screen somehow scrolling here next to me,
I've obviously done a much more
in-depth review this time than ever before.
And.
I feel like I know quite a bit about NixOS now.
I am nowhere near an expert.
There are many things that confuse the living daylights out of me,
and I don't know that that will ever change.
I could probably use NixOS for 10 years
and still not know everything there is about it
and still feel just as confused as day one about some certain things.
What the **** is a flake? I've been using it for 500 days.
I still can't say that without a doubt that I can explain
a flake to you guys and be right about it.
I think maybe I could, I don't know for sure,
and that's the problem, right?
So, what I want to talk about today
are 10 things that NixOS could do better.
So let's go ahead and jump in.
Number one has to be documentation.
Now, I know normally YouTubers will put
the biggest thing at the end, but this one has
to go at the top as bullet point number one.
Documentation is by far the worst thing about NixOS.
SOS.
And.
It's not that there isn't documentation out there.
There's a lot of documentation out there,
but there's no cohesive, codified thing
that I could point you to.
This is the official documentation.
Now, there is official documentation,
so NixOS bros, don't come tell me that there's not.
But there's also unofficial documentation
that acts like official documentation
and has a NixOS...
URL in it. You know, so there's
also a GitHub documentation and there's a NixOS book and
there's all these things because people have
been trying to solve the problem of no documentation
on NixOS for years. And all it's really led
to is a conglomerated mess of who are you supposed
to listen to? I would say I'd point you towards
the so-called official documentation, but it's
not very good. The unofficial documentation
that has that NixOS URL in it is.
Slightly better.
There's a GitHub repo that does a little bit better than that.
The problem is, and I talked about this in my year review,
was that every one of those
are going to teach you how to do something in a slightly different way.
Because every single time that you want to do something on Nixwist,
there's 12 different ways of doing it.
It's really hard to document something that has 12 different ways
of doing things into anything other than a complete mess.
Because it would be a huge undertaking.
And even then, you might not be able to cover everything.
So documentation has got to be number one on the list.
They have to do better.
Number two on the list is community support.
Now, I'm not going to go out there and say...
The NixOS community is hostile towards new users.
That's not really the case.
In some cases, they're actually much
too friendly about offering support.
But when it comes to community support, there's a big problem,
and it's kind of related to what I just talked about.
There's 12 different ways of doing everything.
That means that every time you go ask for support,
whether it's in VimJoyer's Discord or my Discord server
or the official Nix Discord server
or the unofficial Nix Discord server,
You ask someone for support, they're going
to tell you how to do something one way.
And it's their way.
And that way is usually perfect for you.
Perfectly fine for their way of doing things.
But that doesn't mean it's going to work with your configuration file.
Because you did something a different way.
Which means that they may not be able to come together and actually
provide a configuration file at the end that will actually build.
Because there are two different ways of doing things.
That means that when you go to support, you have
to tell them how you basically put your configuration file together.
And then they can maybe help you
with something that will actually work.
And a lot of them will, but you have to be more...
forward with how your system is set up than on any other distro
because of the multiple ways
that you can set things up.
It also leads to some interactions like well this worked for me
why isn't it working for you? Well the obvious reason
is our configuration files just aren't
compatible but the other reason
is that because of the way that NixOS just is
there's so many different moving parts.
Maybe you put all the moving parts together,
but maybe someone else didn't.
And if they have questions and come ask you
and just say, well, it works for me.
That's not helpful at all in any situation,
but it's really not helpful in this one.
And you get a lot of that in the next community.
Unfortunately, just it just that's just the way they did.
Unfortunately, not to say there's not helpful people, but.
there are some not so helpful people out there as well.
Number three on the list is package stability.
Now this one has hit me a lot over the course of the last 150 days
or so. Prior to that I hardly saw
it at all, but for whatever reason since the update back in May
when the last stable release came out
I've had a ton of problems with Python, a ton.
Every single time I update,
there's a Python package that's broken or the test fails or
there's a dependency that just isn't there
or hasn't been updated quite yet.
Now, like I said, the first year, saw that hardly at all.
Now I'm seeing it every single time.
And it's always Python.
It's always...
Now, I blame a lot of it on Python,
but the way that NixOS does things,
that if a Python package fails its test during build time,
the whole update fails.
Like, everything.
It'll just stop.
It'll give you the errors and everything that you need to go fix it,
but it will not continue on.
It will not bypass and just leave that package on.
I think that this is probably the one that most frustrates me the most
because it happens a lot like over
and over again over the course of the last few months.
It's really bugging me.
I have to do overrides in order to get past some of these things.
I have to wait for stable to actually have the new packages in there.
It just.
It's kind of a pain in the ass.
Number four on the list is stop calling it stable.
Okay, now I'm not saying that NixOS isn't stable,
but they have a stable branch and they have an unstable branch.
And I wish they would use other words.
When people think of Debian stable,
They think of the regular Debian branch.
They don't call it stable, I don't think.
Maybe they do, I don't even know.
When they think of the regular Debian,
they think of an operating system that gets very few updates.
And same thing with, like, OpenSUSE, if you're on OpenSUSE Leap.
You don't, you get some updates, but you don't get a lot of updates.
Like, it just doesn't, you don't get a ton of updates.
With NixOS, the stable branch gets a ton of ******* updates.
A ton.
Like, this last one that I just did as of,
like, today, had 3,000 packages to download.
I'm on the stable branch.
Why are they updating all these packages on the stable branch?
It doesn't make any sense to me.
Maybe I'm doing something wrong.
It's 100% possible.
I made a video not too long ago about how I'm
not smarter than you are, and that's 100%
true in this case.
I'm not smart at all when it comes to NixOS,
so it's possible that I'm doing something
wrong there.
But that's not the only 3,000 package update that I have.
I would expect it if I was on the unstable branch, but I'm not.
I track the stable branch, and I have a few packages that are unstable.
But that wouldn't lead to 3,000 upgrades or updates.
It just wouldn't.
So I wish they would call it something a little bit different.
Because not that it's not stable,
but it's just when you see that word stable,
you also think that correlates with the number
of updates that you're going to get.
And that's not true at all.
Number five on the list. I wish there was a GUI way
to reuse your configuration file on a new install.
So if you want to take your config over to a new machine or if you want
to reinstall on your machine, the only way you really can
do that is through their command line installer.
But I wish that there was, so they have a Calamares installer
that you can just install on the NixOS. I wish there was a line
or a page on the Nix, in the Calamares installer that says,
hey, do you have a configuration file that you'd like to use?
Give it to me. And when I reinstall, when I install, I wish that there
was a GUI way to reuse your configuration file on a new install.
I will use that.
That'd be so cool, right?
That'd be very neat.
Instead of having to go through and rebuild everything yourself
and put it through the CLI and all that stuff,
it'd be great if you could just do it in the GUI installer.
But as far as I know, again, you can't.
The next one is more political, if you will.
It's not really political, but it's going to kind of feel like that.
I wish they had more stable leadership.
I don't trust their leadership at all.
It doesn't seem like you can go six months
without seeing someone leaving NixOS in a huff.
You know, taking their ball and going home.
I think the last one was the people
who manage the NixOS repositories are gone or something.
I don't even know.
I've seen it so often, I don't even pay attention to it anymore.
But it makes me worry about it a little bit.
It makes me worry about the project.
Because I really like NixOS.
I want it to continue on into the future.
It feels like...
The leadership is sort of related
to the Manjaro leadership a little bit.
Like, they're always full of drama,
and I wish that they were more like the Debian leadership
and that they were, you know, stable and, you know, steady.
I want to be able to trust them to actually
be able to lead the project and I don't trust the
NixOS leadership whatsoever just
because of all the drama that surrounds them. Number seven on
the list is I wish they made Garbage Collection something
that was more front and center. In order
Save your hard drive space.
You have to get rid of your NixOS generations, right?
Those things pile up as you do more and more rebuilds of your system.
Like, especially when you first start using NixOS,
you're going to do a lot of rebuilds.
You need to be able to set up automatic
garbage collection, and you can do that.
It's actually fairly easy.
It's about five lines if you use NH or something like that.
You can just kind of tell it how many generations
to keep and all this stuff, right?
But it doesn't tell you anywhere, and this kind of goes back
to the documentation, that you need to do garbage collection.
I'm sure it says it somewhere, like, esoteric,
but it should be front and center, because this is very important.
If you have, like, a 512 gigabyte hard drive
and you do a lot of rebuilds, you could fill that thing up
in a couple of weeks if you do a ton of rebuilds.
You need to have...
Enable automatic garbage collection
or you have to remember to do that garbage collection yourself
and that awareness isn't something that you're just going to have
when you first start.
I know I didn't.
Not that you should have it in your brain automatically,
but it should be front and center during setup somewhere along the line
that tells you, hey, you need to do this.
Either that or they need to turn on garbage collection automatically.
Number eight may be a little bit controversial
And because...
NixOS is based on a configuration file.
We all know that, and that means that you're going to spend
your entire time configuring your system in a text editor of some kind,
whether it's Nano or Vim or Emacs or Genie or whatever it is, right?
I wish, and this may be better dealt with by a fork of NixOS
or a distribution that's
based on NixOS, but I wish there was better GUI support.
I really wish there was a GUI tool
that allowed me to do the basics. Let's just call it YaST for NixOS,
shall we? Because I know YaST got a lot of flack back in the day
when it was still around.
But it was pretty cool.
You have to admit that you could go in there
and do things in a GUI way to your system.
It was basically just controlling a whole bunch
of configuration files is basically
what it was doing.
NixOS could do basically the same thing now,
or someone could do it for NixOS, I'm sure.
And, you know, let's let's vibe code that thing
because that'd be really cool.
The problem, of course, is that you can do
everything 12 different ways
and choosing which way to do it
with a GUI would be a pain in the ass, but
still, I think that that'd be really cool. I think that that would open
up NixOS to a lot of people who don't want to spend
their entire time in a configuration
file. Just being able to go into a GUI of some sort
and, you know, do the thing,
that'd be pretty cool. Again,
controversial. I know a lot of people who use
NixOS are like, what are you talking about, Matt? That's the stupidest
thing I've ever heard. And there's part of me
that thinks that, too, because that, you know,
but
I still think that would be cool.
Alright, the next one is, I wish that it had,
this kind of relates back to the package stability of number 3,
but I really wish that Nixos did
a better job with package build testing.
Right now, and again, I may be doing this wrong.
But as far as I know,
the only tests that NixOS will do during build time are Python tests.
They don't actually test anything else.
Actually, that's a blatant lie.
I'm pretty sure they do C testing as well.
I think I've seen it do some C testing as well,
but I don't really care what testing they do.
Like, as an end user, I do want my stuff to work
so I understand why tests are there,
but I don't really care that they test stuff.
What I really want is for tests not to break
something on my system or to make an update fail.
I wish it would gracefully fail.
It would continue on and do the rest of the update,
and then at the end say, hey, this one package didn't work.
Anything that was relying on that package
also didn't go through, which would be fine.
But the way that it works right now is if the test fails, the entire
update fails, which means you basically have to start over again.
Now, it does cache things that have already
been downloaded, which is nice.
It saves you from having to download those 3,000 packages again.
But still, it means having to go through, fix the damn thing,
override it or whatever you have to do in order
to get past that package and install it, whatever,
and then start basically do your upgrade again.
I just wish that the build testing was just a little bit better
and a little bit more graceful.
Anyways, the last one on the list is their command structure.
Now, I'm not talking about anything technical.
I'm just talking about what they name their commands.
So if you want to do a rebuild of your system,
it's NixOS rebuild switch, right?
I understand the language behind it.
You're switching to a different generation.
That's the whole idea.
But man.
I just wish that the wording was better and less wordy.
You know what I mean?
It just feels like...
And you add on flakes and you have to do your path and all that stuff.
You could...
If you've ever run Gentoo, okay?
If you've ever run Gentoo and you've looked at a portage command,
you know exactly my pain.
Now, NixOS isn't quite that bad,
but you can see an upgrade...
Command on Gentoo that's two lines long three lines long
You know what if you're doing a whole bunch of overrides
and masking all unmasking all this stuff that Gentoo has to do
You Gentoo guys know exactly what I'm talking about
Nix OS is kind of again not that bad
But it's kind of the same where you can if you were doing
a whole bunch of different things in a command is NixOS
Rebuild switch dash dash flake and then you can get different
verbosities and and a whole bunch of different things if you want to do
It I wish it was better now
You can fix a lot of that by using nh
Which is the next helper tool that will do a lot of your stuff for you
and those those commands are a lot better
And actually, you don't need a lot of the dash-dash flake,
it just knows where your flake is.
By magic or something, I don't even know.
nh does better, but I wish the built-in tooling did it better.
They should just use nh as their built-in tool.
That's probably not going to happen.
So anyways, those are the 10 things I think that NixOS could do better.
If you have thoughts on this,
if you're a NixOS bro and I got anything blatantly wrong,
which I'm sure I did, you can get in the comments
and berate me for being an idiot.
If you are not a NixOS bro and you have questions or comments on this,
you can also berate me for being an idiot if you want to,
or you can just leave your regular comment
in the comment section below.
I'd love to hear from you.
You can follow me on Mastodon or Odyssey or Blue Sky.
Those links will be in the video description.
Basically, if you want to.
Hear me shitpost about things.
That's where I do it on those platforms there.
You can also support me on patreon.com. That's where you'll find
a weekly exclusive podcast that I post for all my supporters.
Basically just me sitting in front of this microphone rambling
on for 10 or 15 minutes about random things that I'm thinking about.
Sometimes I talk about apps that I'm vibe coding if you're interested
in that kind of thing, which not a lot of people are. Or I talk about
Things that I'm doing in my life,
or with technology, all sorts of stuff.
So if you're interested in that thing,
patreon.com slash linuxcast, or the YouTube membership down below.
Thanks to everybody who does support me on Patreon and YouTube.
You guys are all absolutely amazing.
You guys are all just phenomenal people.
Without you,
the channel just wouldn't be anywhere near where it is right now.
So thank you so very much for your support. I truly do appreciate it.
You guys are...
Amazing. Again, I say that every time,
but I truly do appreciate it, so thank you so very much.
I will see you all on the next one. Goodbye.