(Which I mostly mention because I skimmed the page, saw 6.6, made a confused face, went back to check that yes I do in fact have Linux 6.8 on my NixOS 23.11 system, then reread and realized they said default which I didn't really process the first time.)
I started using NixOS sort of randomly - I wanted a SteamOS-esque experience for my gaming handheld, and Jovian for NixOS seemed like one of the best options for that at the time.
I like that it's about as close to the SteamOS experience that you can get in a third party distribution, and I like that everything is modular (so you could pick whatever desktop you want to pair it with).
It's weird that _everything_ is configuration in Nix. Little stuff like changing your timezone seems to require a NixOS rebuild (which requires a keyboard). GUI settings clash with the Nix way of doing things.
Dunno if you’re aware, but there’s also Fedora’s Atomic Desktop, which is actually more similar to Steam OS, as far as I can tell. Built on top is Universal Blue, which includes an actual Steam OS remix called “Bazzite”.
Conceptually, it is very different from NixOS, with image-based updates and all.
When I started down this path in November, there wasn't a clear choice between Bazzite and NixOS. Seems like a lot of people have chosen Bazzite, but since I have Nix working, I don't really have an incentive to change.
> Little stuff like changing your timezone seems to require a NixOS rebuild (which requires a keyboard).
You mean setting the timezone (going and writing `time.timeZone = "whatever";`)? Because actually doing the rebuild (`nixos-rebuild switch`) would be easy enough to make a button for if you wanted (just make a .desktop file that runs the rebuild command).
What I love about NixOS is the ability to configure my entire system in one place. What I hate is the Nix language itself - you’ll get used to it, but only because you have no other real choice.
I really want to switch to NixOS at one point. I’ve had a try about a month ago but having not read much documentation beforehand, it took too much time for me to get everything the way I wanted. Fedora with Hyprland has been working just fine for me so maybe I’ll hold off until things become easier.
I'm not even sure what that would look like. Nix is such a departure from other Linuxen that I don't think it will magically become easier; I expect you'll always need to understand Nix to use it. Maybe better syntax highlighting etc. would help?
I expect it's much easier to learn Nix in the age of LLMs than it would have been before.
as someone who has been working to make nix my main system for several months now, there are some very clear areas of improvement that would make things easier:
- [any] documentation, the majority of nix modules are undocumented and so the only way to figure out what settings are available is to find and read the source code (and even then it could be using a module to convert the definitions to the target config format, in which case there’s even more guessing, but at least the official documentation of that package gives you something)
- coding standards; lots of modules have different variations of camel case, snake case, adjective-noun, noun-adjective, etc so it’s not clear what the correct format of a setting is for an arbitrary package
- flakes just need to be both an official feature and set to be the default way to interact with nix, it just has too many upsides
- Better errors, the current errors are just horrible to read and you end up picking out 1 or 2 spots in several paragraphs of irrelevant code snippets and stack traces
- up to date resources, since the official docs aren’t very beginner friendly, third party resources end up being the way people learn (vimjoyer has been a godsend), but half the time when you try to use those resources, they’re out of date and lead to broken nix configs, having solid official updated documentation to help new users get started in nix would go a long way here
Seriously… flakes are still “experimental”… come on… this is starting to look bad at this point… I have been refusing to get onboard while the entire community’s preferred methods are “experimental”… I don’t want to base my entire OS install on experimental features…
The flakes situation felt like the sort of thing that the next major release would have finally solved… it’s absolutely baffling to me that this is still not offical and enabled by default… I haven’t seen any new decent documentation in over year that doesn’t use flakes.
I'd recommend taking a look at Guix as a kind of alternative implementation of the idea of Nix. It has its own usability issues, especially surrounding nonfree software and a much smaller community, but it addresses some of the issues you comment on.
nix flake update then nixos-rebuild switch --flake and encountering an error is nightmare fuel. There is always a moment right after the error occurs where it feels like you'll never figure it out. I've always manage to up to this point but man...
i haven't had a chance to have a play with the alpha yet, but there is a project that is working on making nix "easier" for beginners. its called snowflakeOS: https://snowflakeos.org/
There was a bunch of recent drama surrounding a woke takeover and/or fork of the Nix ecosystem. Browse /r/NixOS if you want details.
I haven't followed it closely and I don't want to misrepresent, but as I understand:
- They pushed the founder of the project out of the BDFL role he'd held for 21 years, and
- They started a new "governance" process that included evicting people who disagreed with their tack/tact. It was done in the name of "inclusivity," but it sounds like the bar for excluding people they disagreed with was very low.
The Snowflake guy (Jake Hamilton) is part of the takeover crew. He's got a fork in-waiting if the takeover of mainline Nix doesn't go the way they want:
The controversy started with questionable sponsorship decisions for NixCon, which brought the entire project leadership under scrutiny as it wasn't the first time this had happened.
This, along with some more long-term issues contributed to the creation of an open letter[^1] criticizing the BDFL of Nix. How valid you consider the criticisms is not for me to decide, but I don't think dismissively reducing the issue to a "woke takeover" is helpful.
There are multiple competent LSP implementation for nix so hopefully that's not the blocker! Nix has rough to pick up, but has a comfort to it once you broach it.
Not super likely this will happen any time soon. In the closed source world profits drive development and ease of use drives profit.
In the open source world what drives development is some neck beards obscure opinion on user friendliness. Which likely still involves a command line tool and a config file with an acronym as the config parameter.
Command line tools are cool for me. I just need better documentation on the behavior of the CLIs and exactly what they do without having to dive into the source code. One reason I’ve held off is because I’m not familiar with C++. Hoping to fix that over the summer
being cool isn't the key point. The fact that you need better documentation is the problem.
Did I ever read a manual or look up docs for MacOS, windows, iOS, or android?
No. That's what's missing from open source. Well it's not missing, but it's like the lowest priority such that it takes a looong time for something that's open source to approach this level of user friendliness.
> Did I ever read a manual or look up docs for MacOS, windows, iOS, or android?
> No. That's what's missing from open source.
Sounds like a you thing. I consult macOS manpages routinely. Having been away from Windows for a long time, I consult MS docs on Windows and PowerShell pretty much every time I touch Windows.
Aside from all that... if you're too good to read a manual, you're too good for Nix; do everyone a favor and move on.
Nix has lots of real UX issues to fix but trying to onboard or entice users whose expectation is to read nothing and learn nothing would just be a harmful mistake.
You're comparing a user-facing GUI to a system administration tool. Just like I don't expect Jack from accounting to read a doc to launch Chrome from Gnome, I would expect James from IT to read docs before setting up the Oracle Linux LDAP server or the IIS + SQL Server stack.
I don't think that NixOS as a main stream OS makes sense. I personally use it because I'm a nerd, but I would not recommend to my sister anymore than RHEL or Oracle Linux.
However, to efficiently administrate an heterogeneous server fleet, I have not found better yet.
It does make sense. The key thing with nixos is one config for all OS installations. This makes sense for casual users, and also for mid-tier users and developers who want a really good OS but not the technical baggage that hinders development.
Right now NixOS is mostly used by devs who don't mind doubling development time because that's the extra time it takes to learn and deal with Nixos.
This makes sense for everybody:
An OS with the power of NixOS and ease of use of MacOS or Windows or Ubuntu.
I actually don’t like the special treatment of certain programs. Consistency is king. Even on Fedora, I boot into TTY and run Hyprland manually from there or just stay in TTY+tmux.
It is perhaps also worth pointing out that you can easily grab a newer kernel as well; https://wiki.nixos.org/wiki/Linux_kernel discusses options.
(Which I mostly mention because I skimmed the page, saw 6.6, made a confused face, went back to check that yes I do in fact have Linux 6.8 on my NixOS 23.11 system, then reread and realized they said default which I didn't really process the first time.)