I'm a user of Nix for about seven years and finally decided back in March, during the second rehash of $sponsor controversy, that I'll stop investing and move away from the tech as soon as I have a suitable replacement.
I've been critical of Nix for a variety of reasons along the way but one of those reasons is how so many people (and consultancies) seem hell-bent to set up their own little fiefdoms within the community.
The community is already niche, we certainly didn't need people purposely driving further fragmentation and incompatibility with these frameworks with bad bus factor and NIH designs.
I've seen a lot of tribalism and cargo culting around some of the other efforts in this vein, too.
I believe Snowflake is one of Jake Hamilton's projects. He's trying to make Nix more approachable through GUI tools etc.
Unfortunately, he's also part of the mob that chased the founder out of the Nix project and decided it should be yet another battleground for identity politics.
Like you, seeing the community entertain these stupid political fiefdoms makes me want nothing to do with NixOS.
However, I might stick with it out of laziness though until SteamOS runs on 3rd party hardware. The Jovian project is a Nix-based SteamOS clone that's been working well on my Legion Go, and I don't want to spend the time back in tinkerland finding something to replace it.
Let me be very direct - I disagree quite a lot with your characterizations in this post. If anything, I am probably much more closely aligned with Jake's "personal politics", since I also signed the first open letter about rejecting military sponsorship for future events. I felt the second open letter was not well thought out or well argued, so I didn't sign that one, but I do think it's clearly a net positive for Eelco to step way way back and that he has been in no way contributing to healing or progress during this debacle.
I resented people building fiefdoms because they're often commercially motivated and used to drive consulting engagements. They fragment the community on a deeply technical level, ruining code reuse and interoperability, for negligible technical improvements. I don't have any idea what the authors' views on project governance or human rights are, that wasn't a factor for me.
> it's clearly a net positive for Eelco to step way way back and that he has been in no way contributing to healing
Just let people do their thing. You’re not a bad person if you have nothing wise to say about people being hurt, and lots to say about resolving dependency constraints.
> fragment the community on a deeply technical level, ruining code reuse and interoperability
Most Nix consultancies I encounter make highly reusable flakes. flake-parts, flake-utils, fenix. They have a small commercial spot in their package’s namespace, and the first reason you look them up is “I wonder if they’re doing other smart Nix things that I can copy”, and they usually do.
You're not a bad person, but you might be a poor leader in that situation, which, as I understand it, is the main focus of the complaint. There's a difference between letting people do their thing, and letting them lead a large community of developers despite that not being their strength.
> While the foundation board was never intended to lead the community, we cannot deny that it is perceived to be in that role by many, and we therefore take full accountability. [...] Eelco is the principal author of Nix and undoubtedly a central figure in the ecosystem that grew around it. We confirm that Eelco showed no intention to be perceived as or act like the BDFL of the Nix ecosystem, or the Nix code base. *To commit to that in a timely manner, he has decided to formally step down from the board. This decision was made amicably and in mutual agreement with the board that this is the right thing to do.* Our collaboration was always characterised by our deep respect for Eelco’s work and our awareness of his lasting impact on our lives.
Fwiw, I'm not a Nix user nor am I really following the whole discussion here. I'm not trying to spread "FUD", just point out that there's a difference between "bad person" and "bad at the role one is currently in".
That said, as a complete outsider, the quote "the foundation board was never intended to lead the community" is wild to me. It sounds like the director of NASA going "I never intended this role to have anything to do with space". I think I understand the meaning behind the sentence - they wanted to support the community, but that the community leads itself in some way - but I can also see why the community would see them as having that leadership role that they apparently wanted to avoid. I also don't understand why someone who wanted a purely technical role would ever be on that board in the first place.
Like I said, I'm not really following this debacle, and I don't know the details. I'm just amazed at that quote, which seems very revealing to me.
You seem to be unfamiliar with the situation, then. The sponsor wasn't for NixOS itself, but a related in-person event. NixOS had existed for literal decades prior to this.
I highly doubt he would reject DARPA as a sponsor for NixOS. This was just celebrated by a bunch of safety people that have significant overlap with NixOS security goals: https://www.darpa.mil/program/translating-all-c-to-rust
You don’t understand that meme. DARPA is direct military money for a bunch of tech people are happy with supporting. They just pretend it’s not the military so they don’t have to have any hard moral conflicts.
Sponsorships are generally acknowledged with quid-pro-quo advertising opportunities - otherwise they'd be called silent donations.
In the case of tech conferences like the inciting incident, that means your logo everywhere, maybe an ad spot in between talks, and booth space. You might get some intangible reputational benefits from whatever other sponsors are present if they are viewed as highly prestigious or respected. Might even have opportunities to do a talk by one of your employees, we've all been to conferences where a vendor conspicuously also has a talk that coincidentally features their products heavily. All in all, it can elevate your perceived legitimacy in various ways.
Advertising might get you more business or more applicants and thereby grow your reach and success.
In terms of my personal values I'm a pacifist. I don't want to see something I like(d), something I made modest code contributions to, used to advertise for a commercial military organization that manufactures equipment for violence. It's the same way a vegan probably doesn't want to see advertisements by the beef farming industry or that someone who cares about renewable energy and sustainability doesn't want to see sponsorship by someone whose holdings are a huge stake in coal mining and fossil-fuel power plants.
In the case of the inciting incident, it wasn't a case of massive dollar amounts, it was ~$5k USD and it wouldn't have jeopardized the conference at all to say no thank you.
Yeah, it makes sense if you're a pure pacifist, the "all violence is wrong" -type.
I'm more of a pragmatic pacifist myself, which allows or even carefully supports violence for suppressing violence. I believe the USAF is generally speaking aligned with me on that. Which is why I'm not unhappy when they work with FOSS.
I think the opposite of pragmatic pacifism is the military-industrial market. The expansion and brinkmanship of weapons development brings out the absolute worst qualities in privately owned businesses. If you think lock-in is bad when it's your phone or email account, imagine how horny investors get suggesting DRM for hand grenades. This escalates because the goal of defense companies isn't to defend America, but to make as much money as they can get away with.
I'd like to think that I'm pragmatic as well, which is why I won't deny that NixOS would likely get used in conflict with or without event sponsor deals promoting it. However, if your in-person events pivot from a technically-focused gathering of like-minded individuals to a war council bankrolled by Anduril, I'd expect most attendees to be angry. Especially once you consider that the United States sponsors the export of weapons to countries that don't use violence for justifiable or proportional causes.
The second letter saying TL;DR "fuck you Eelco, kind regards". I'll never understand the motives here. Never. Please let me know when you've spent decades creating something and I'll be sure to shit all over you in kind.
I don't know much about it but that summary seems completely unreliable:
* it reads like the result of 'there was a power struggle and my side lost'
* it falls back constantly to overly simple cause-and-effect answers to complicated problems
* it clearly is trying to paint certain people as villains and dissecting their imagined motivations while excusing or ignoring the motivations of others
Interesting, but not convinced of its impartiality. There's a strange attempt here to link labour union organising to social activism, which is incorrect and ahistorical. And also irrelevant to nix, which is a community rather than an employer.
Individual union organisers might also be social activists, but effective union organisers know that they need to a appeal to all employees regardless of their politics. And historically unions have been just as socially unreconstructed as companies, and subject to the same process of social activists pushing for their reform.
> Individual union organisers might also be social activists, but effective union organisers know that they need to a appeal to all employees regardless of their politics
One need only look at labor's reaction to the Teamster's president's speech at the RNC to realize that this is clearly not the case.
When a person is deeply involved with something that turned into a conflict and then they write their history of it, as is the case with the link above, then I would say that framing them as a 'reporter' is not accurate.
Out of curiosity - what makes you think that the author of the link above, Chris McDonough (incidentally an author of the Pyramid Python web framework), is "deeply involved" with the NixOS conflict?
It is a firsthand account of someone in the community. They referenced no sources and gave a description of events based entirely on memory. They claimed their own involvement and interest in the outcomes.
If the person is involved in a situation and recounts a history from their perspective it is not reporting. It doesn't matter whether you think they did a good job or not. A combatant in a war writing their evaluation of it afterwards is not 'reporting' and neither is what he did.
An analogy is not a literal comparison between two things. It is a way to describe something by pointing out relationships between things and comparing the relationships. It does not literally compare NixOS with a warzone.
Putting aside the accusations of activist ideology, this paragraph seems key:
> At a properly run company, if you are caught eating someone else's sandwich from the fridge, your boss will confront you and say "hey, Bob, don't eat Ted's sandwiches." That will be the end of it. In an organization with weak leadership, however, the entire company will receive an email from HR in the afternoon dictating a company-wide seminar on sandwich theft prevention, a #sandwich-theft chatroom will be created, posters depicting sandwich thieves in an encircled red X will appear on the walls, etc. The latter is more akin to what happened in the Nix case I outlined. There was no leadership in place to deal with an isolated sandwich theft, so it now needed to discuss policies with the goal of ending sandwich theft forever and punishing all sandwich thieves globally.
As an outsider, it looks like Nix had a weak leader who refused to mediate differences between people. He didn’t do what was right and just. His problem, and his irresponsibility, became everyone else’s problem and responsibility. A power vacuum but also a moral vacuum.
> As an outsider, it looks like Nix had a weak leader who refused to mediate differences between people.
As someone who closely observed all of this over the months, I can confirm that this was exactly the root cause of the whole issue. 4 out of 5 of these leaders eventually burnt out and quit.[^1]
The new governance structure, despite the rough start[^2], hopefully will solve that and create an actually caring leadership.
Without knowing the specifics: I doubt a governance structure will produce good leadership. I've seen Rust people place their hopes in abstract, convoluted processes, and they've failed repeatedly.
Rather, I see the problem as character. The chosen leader(s) need the internal, personal qualities necessary for getting volunteers to cooperate well. External structure won't save the project if leaders lack character, it will just slow the damage they can wrought.
Relatedly, I was uncharitable before in emphasizing the weakness of Nix's leader. I think we all lack the moral (apolitical) education necessary for just leadership.
Power tripping. Ever wonder why projects become "foundations" with heavy emphasis on non technical bureaucratic bloat, committees, forums, "community managers" with way too much power and so on?
The main reason to become a foundation is to have some legal entity to deal with money. Some times projects get grants or donations or google summer of code mentor payments, and that can either go into a random account of whoever happened to be in contact with the donor, or it can be properly managed by a foundation with agreed-upon guidelines on where to store money and what it can be used on.
The end result is fragmented projects, worse developers and less activity. Congratulations. You got your social point across to the detriment of everyone.
Bazzite and ChimeraOS are good contenders for that use case if you weren’t aware of them, to the point that I am plannng on using one for setting up a system as a “gaming console” for a family member and an email howto should be good enough for minimal tech support on my part.
Just setup ChimeraOS on an 8845HS box this past weekend and really liking it. I do wish there were a few more emulators configured in the box, and there are some rough edges (the second activated controller is always controller 1 in games for some reason). It's been relatively nice all around.
I do wish there was some slightly better platform specific documentation though.
Thank you for illustrating the problem with the Nix community so succintly. When someone brings up those words, I know immediately to distance myself from them.
I suppose that's the American led industrial military complex?
I bloody hate war and the military, but I have to agree with that one. While Russia, China & co. keep moving closer and closer to the fascism of pre-WWII world, the collective West seems to be the only force countering that, though parts of the US politics is showing signs of also falling into the seductive philosophy of fascism.
These people wouldn't know what a fascist was even if Hitler took a dump in their cornflakes.
Meaning of the word has been twisted and manipulated to refer to anyone who has a different opinion on something, to the benefit of actual neonazis and fascists.
I’ve noticed the same things, but I think it’s a symptom of Nix being so polarizing in the first place. I can’t think of another piece of software I dislike so much but I’m willing to put up with it because it’s just that good. Like I can’t wait for someone to come up with a better version. I suspect I’m not alone, and it causes some people to try to abstract away all the warts and sharp edges with these frameworks. Ultimately, it probably comes down to project leadership. There doesn’t seem to be a clear vision, consensus or anybody who can do some wrangling to get things going in a direction.
People have tried with things like guix and there's a few other Nix spinoffs.
The issue is that: Nix/NixOS is here and JUST good enough. So replacing it will be hard. What is come up with has to solve things so much better that the community who has invested in NixOS and others sees enough light that it is worth moving over.
That's gonna be rough. Given how hard nix (the language) is to deal with, I won't call it impossible, but... I will say, the successor is more likely to succeed if NixOS totally implodes, and I might go as far as to say... only if it implodes or offers substantial back compatibility so people can migrate.
As someone who has been vaguely watching the NixOS ecosystem, but never looked closely enough to see what those sharp edges are - is there a writeup somewhere, maybe a blog post or two, that goes over what's so good and bad about Nix?
The most common critiques I personally see are that the syntax and language is unappealing for many folks, and that the docs are pretty frequently some combination of sparse/haphazard/stale.
In my time I very often had to go read raw source to understand how to properly use some less-trivial constructs.
I have enough of an FP background to find the language tolerable but not yet pleasant, or even particularly capable. It's absolutely a fair thing to not enjoy.
The other major criticism that I think is even more defensible and less subjective is that incremental adoption is not very fun. Many things that are well supported on a mainstream Linux distro will not work OOTB in NixOS until some kind soul contributes the Nix-specific implementation of that thing. In some cases that's not even fundamentally possible. So you run into lots of cases where the first hit on a Google search will solve this thing if you're on Debian, but you're looking at hours of triage to do the same thing on NixOS instead.
I have plenty of examples about things that are uniquely possible with NixOS too, but I don't like to evangelize anymore.
It's not exactly a writeup or review, but Ian Henry's blog series How to Learn Nix captures the surprises, good and bad, that a newbie exploring Nix is likely to encounter.
Some of the problems he encounters may be outdated, as Nix and its documentation have both evolved since the start of the series. His experience is also somewhat shaped by his decision to rely solely on the documentation and the software itself for guidance, which he held to for quite a long time-- if you seek help from others earlier on you may get stumped less often. But overall it captures very well what getting to know Nix and its docs is like, including the emotional reactions to sharp edges.
I've been in the ecosystem for years, including working with core maintainers and using it professionally in a large context. I'll just summarize what ultimately turned me away:
1. The community is extremely polarizing. Not just politically, but even from just being a general contributor. Depending on who reviews your PR, you can have a very pleasant experience to a downright demeaning one. I get that every community isn't perfect, but after years of dealing with generally the same problem people, I just quit contributing.
2. The Nix language itself is relatively simple to grasp, but for one reason or another people tend to build it up into a rat's nest that becomes nigh impossible to reverse engineer. Because of it's laziness, the error messages are generally unhelpful, and debugging is nothing but pure pain.
3. The thing that makes Nix great (reproducibility) is also it's greatest pain point. Depending on your language, your packaging experience may be simple to downright infuriating. At one point I just stopped packaging NodeJS/Typescript applications and resorted to other means (and this, of course, tended to anger the fanatics). Bottom line is that most software wasn't built with Nix's constraints in mind which means it's generally always a battle to get things packaged correctly.
4. The kingdom building has continued to be a major problem. Just watch the Nix Discourse for a week and you'll likely see the same problem space reinvented at least a few times. For whatever reason, in the Nix world, it feels like _everyone_ thinks they can do it better. This becomes a serious problem when it comes time to actually producing things in Nix. In my time using it professionally, I had to change "libraries" dozens of times due to lack of maintenance/abandonment. I swear each programming language must have a dozen different libraries for packaging, each with strange bugs and missing implementations.
I am one of the hopeful that something new and better will come out of Nix, but I have high doubts it will come from the community itself.
> The community is extremely polarizing. Not just politically, but even from just being a general contributor. Depending on who reviews your PR, you can have a very pleasant experience to a downright demeaning one. I get that every community isn't perfect, but after years of dealing with generally the same problem people, I just quit contributing.
God, I feel this. I ended up just stop trying to seek help because most of the time I'd come across the MOST self-righteous people I've ever met.
I don't think Nix will ever be easy to use because half the community genuinely does not care about their fellow human beings enough to write software for their fellow human beings.
> I don't think Nix will ever be easy to use because half the community genuinely does not care about their fellow human beings enough to write software for their fellow human beings.
This matches my experience as well. I’ve been trying to use nix either as a system package manager, package manager, or OS since 2019. It was first recommended to me in 2016.
I’ve tried to use it for C++, Python, and Flutter development. I’ve tried to use it on MacOS and NixOS.
There doesn’t seem to be any use case where it’s usable for regular people. I can use it, sometimes, but more often than not it breaks and fixing it becomes the project over the project I was trying to use it for, before I have to give up and abandon it for conventional, less aspirational but actually usable tools.
Just the other day it broke because of a MacOS beta update. The suggested fix in a PR to reinstall it didn’t work. The uninstall instructions didn’t work. In the end, after some manual fidgeting and more ad hoc suggestions on PRs plus some informed guesswork on my part having to do with the ca store at various stages, I was able to restore my install to functioning.
Every time I ran the install it was text-based and filled my screen with intermediate commands and asked me whether it should execute some command that nobody but a POSIX skilled person would understand. Even after trying to tell it not to bother me.
The community has seemed obsessed with flakes that will fragment the ecosystem and lock nixpkgs into backwards compatibility (to some practical degree). Meanwhile when I tried to contribute back to nixpkgs, and an update broke my patch (a derivation that made specifying application derivations roughly as easy as homebrew), no one on the forums could tell me how to fix it.
Now it seems like the community, or some fraction of it, is chasing social perfection while their own tool is in such a half-baked state that I can’t recommend it to anybody, and almost nobody technical that I interact with recognizes it.
Meanwhile, in the time that nix has been…doing whatever it’s been doing, docker has become the de facto standard for reproducible environments. It’s hypothetically not as good, but practically it’s a whole lot easier to use, so now nix has to push back an entrenched competitor if it wants to become more than just this weird niche tool that nobody’s heard of.
I guess if the community doesn’t care if people use their work or not, I can’t blame them if they want to spend their free time on theoretical solutions. But it seems more inability to recognize other people’s hardships and arrogance rather than intentional neglect.
Someday I really hope someone figures this out, because having a cross-platform cross-purpose cross-language declarative package manager would be awesome.
EDIT: Also, one thing that’s bothered me about the recent Nix drama has been how they treat their “own” people. What I’ve heard or seen project leadership or moderation doing has come across as capricious, spiteful, and entitled towards people who have invested huge amounts of time into Nix; regardless of the politics of the individuals involved.
It’s turned me off from continuing to invest in Nix either as a contributor or a user (I was even questioning fixing my preexisting install, but I figured deciding on an alternative and switching right then would take more time). I’m hoping an alternative comes to light, or somehow I’ve misjudged the situation.
I've been having success with Silverblue as an alternative to NixOS (Bluefin, to be specific). Still using home-manager, but the stability has been just as good as LTS NixOS releases.
If you've used a normal linux distro and installed GNOME.. and then decided "That was dumb." and wanted to go back...and realize, you can't. There is no real way to get rid of Gnome sanely. (I can say the same of KDE and other massive packages.)
On Nix, I can, I just remove it from the configuration, and basically reapply my config. No damage done.
For tools I'll want to try out or maybe use 2 times in my life, I can just run them in shells that have them, and not add them.
This all adds up to a much more pleasant experience. I won't say flawless, but... it beats much of what is out there.
I do think people can take it to an extreme which isn't useful. I still have declarative dotfiles, unlike some.
But, for just managing the OS and packages. I've found nothing better. Realize: Things that are clusterfucks to package like python are still clustefucks. But... otherwise... 9/10 would install again, language can take a long walk off a short pier.
> only if it implodes or offers substantial back compatibility so people can migrate.
Yeah, at this point, any successor would have to be compatible with nixpkgs, which means to embed the nix language in some way.
My best migration experience is the vim->neovim one. It (almost) fully supports vimscript and yet runs Lua side-by-side, paving a great way to the full Lua adoption.
I replaced it by never using it, and just using traditional Linux and traditional configuration management.
Or for every use case where that setup sucks, using the containerization ecosystem of my choice instead.
I personally struggle to figure out where the combination of those tools is failing anyone where Nix comes in and saves the day. All I ever hear about it is that it's a great concept and a great thing ruined by excessive difficulty and too many downsides. In that sense I'd rather stick to the devil I know.
> I'm a user of Nix for about seven years and finally decided back in March, during the second rehash of $sponsor controversy, that I'll stop investing and move away from the tech as soon as I have a suitable replacement.
Same for me. We were exploring the use of it across our company for doing the building part of our containers, but the seeping in of identity politics made me rip the whole initiative up, it's simply too risky as you can see very likely paths towards fragmentation and disruption if you use this tech. Such a shame.
I tried using it, but the slow-repos, and weird bugs on my laptop (which needs proprietary blobs) put me off. I very much would prefer using scheme to Nix lang but the eco-system is far smaller.
I really like the idea and architecture of GUIX and I find it like a better design overall than Nix... but unfortunately, being under the GNU, support for proprietary firmware and Operating Systems (i.e. Mac and Windows) makes it really hard for most of us who are using those systems and don't really feel like running a VM just to use whatever software.
I wish they had a separate spinoff that just made sure their software can run on Windows and MacOS, something like exists for emacs, but I think that the challenges are pretty big as they appear to rely on Linux-only APIs?
The challenges are more political than technological. They prefer not to compromise their choice to use only Free Software, which is their right, of course.
However, I've run into a GUIX person or two who frame it as a technical issue because something like macOS lacks a completely verifiable build chain (i.e., needing to use XCode to bootstrap). This is a factual statement, but not the real reason why support for macos/windows is absent.
What is the real reason then? Please enlighten me, because I have been blocked by these technical issues in my past attempts to bring Guix to macOS. Guix is built around glibc and there is no glibc port for macOS. Using XCode for everything is like replacing a bicycle drive train with a steam engine; I guess it's still a vehicle of some sort, but Theseus is still unhappy with his new ship.
Unwillingness to compromise, as you might recall from our last conversation on the topic. This is your right, but framing it as a technical problem is incorrect.
You don't have to use it for everything, that's a straw man. If Guix-darwin was willing to accept some impurity, you could probably use XCode just enough to bootstrap a glibc and compiler chain, and then dispense with it.
Having a completely verifiable toolchain is a laudable political goal, not a technical requirement.
nix-darwin's existence clearly shows there are no technical obstacles to an equivalent guix-darwin.
Believe me, I wanted to like Guix. I'd prefer a Lisp over the nix language, easily. But I'm losing respect for the project based on its messengers.
Humans already have ways to build software on macos, so why bother doing it with something called "Guix" if the thing that we would necessarily --- and for technical reasons --- end up with bears little resemblance to Guix? If someone sees value in that, enough to warrant converting resources to realize this value, they are welcome to do just that.
Note that we also have a way of using Guix as it is on macos via virtualization of Guix System. It also sits atop a large binary blob (the size of the native bits of the qemu closure), just like a macos-native bootstrap of the roots of the Guix graph does.
We're going around in circles now. I believe the Guix equivalent to something like nix-darwin would still be sufficiently guix-like (like a new language impl) to be worthwhile. You believe it wouldn't be guix, and iiuc, nothing short of your vision of guix would be guix, and since that can't be done from top-to-bottom on macOS, guix can't be done. I take it you don't view nix-darwin as nix?
And yet, the nature of identity is always in flux. You are not made up of the same atoms as when you were an infant. Many lines of code in a software project change, and yet it remains the same, ship-of-Theseus style.
Guix's identity could encompass a guix-darwin side project and still remain guix. You think of it as a technical issue, but it's only your choice of what guix means that entails that view. Which comes right back around to my assertion that no macOS support is fundamentally a political choice of guix's devs, not a technical problem.
> end up with bears little resemblance to Guix
Based on my experience with nix-darwin, this seems like exaggeration, and I think most others would agree.
> Note that we also have a way of using Guix as it is on macos via virtualization of Guix System. It also sits atop a large binary blob (the size of the native bits of the qemu closure), just like a macos-native bootstrap of the roots of the Guix graph does.
You are possibly the only person who is using "binary-blob-at-root" as equivalency criteria. Are you genuinely confused why macOS users aren't just using the Qemu Guix? Part of the appeal of nix/guix on mac is not having to pay the virtualization cost.
Guix has the nonguix channel, which provides the vanilla Linux kernel and other packages that contain blobs or nonfree parts: https://gitlab.com/nonguix/nonguix/
I don't know much about the project but as an outsider it all just seems totally insane! People writing letters with screenshots of actions really? Liking a post becomes the equivalent to going on a political march or something? I can't help wonder if a lot of these problems would be avoided by more collaborative in person/talking and frankly more emotional awareness. It's all cognitive left-brain stuff - where is the emotional centre?
Unfortunately still TBD. If I didn't have to support MacOS Guix would be somewhat attractive. I've also come around to enjoying systemd and have an Nvidia GPU in one machine, which are both things Guix doesn't wish to support either.
If Nix disappeared overnight I'd probably be using chezmoi to fill in somewhat for Home Manager and mise to fill in somewhat for devShells, and some ansible to try to fill the gaps, and fairly bitter about it.
I'm philosophically opposed to containers in the dev feedback loop, as I want native installation and performance for my language toolchains and editor and such.
The site you mentioned seem to just link to a bunch of GitHub repos. Neither site answers the questions new users care about the most, like why should I use this new OS and who are the people behind the project.
The most recent commits in the pinned Github repos are two months old. For a project that considers itself "Alpha" and "Not yet ready for daily use" that's a pretty long time of inactivity.
In the non-pinned, non-auto updated repos, I see commits from two weeks ago.
Though the main contributors are pretty active with nixpkgs, so a lack of commits here doesn't necessarily mean they aren't working on improving snowflakeos, but working on getting improvements they need implemented upstream.
Also, how hard can it be to touch up on docs or some other small parts at least once a week?
If you don't have the time for that maybe don't start a new project?
If someone creates a website for a project they are obviously trying to present it to potential users. That is at odds with not working on making the project actually usable.
But as a different comment suggested, the project does still seem to be worked on, so I remain hopeful we might one day see a user friendly NixOS derivative mature.
I maintain at least one reasonably large open source project myself and pride myself on our turnaround time.
Our users/contributors don't need to wait weeks, months or even years until their issue is categorized, addressed and resolved.
Of course part of this is staffing and domain dependent, but I do believe that marginal updates to a project (< once per week) is worse than quitting
Good for you. I have a life, and will never hold myself to such a standard. It's a side project I decided to give away for free. People can wait as long as it takes.
When I tried nix, I had the most utility from doing a nix-shell -p to get different envs for trying out different versions of apps/environments for dev work.
But for a full system, given universal blue and other variants (e.g. bazzite seems to be having a lot of success on the steam deck), does nix still make sense?
> for a full system ... does nix still make sense?
In many ways, Nix is often "second best at everything". -- Since Nix can be difficult to deal with, it may often be a better choice to use some other tool for any particular use case.
e.g. maybe using asdf is a better way to fetch tools (compared to nix-shell), or docker-compose is a simple way of running project-specific services locally (compared to devenv), or fedora silverblue is a simple way of running an immutable OS (compared to NixOS).
I'd like to think that the benefits from buying into Nix allow easily getting the advantages. e.g. Nix is a more expressive way to build a Docker image or a VM compared to using a Dockerfile or Packer.
For system wide configuration, NixOS allows system-wide configuration declared from a single starting point (possibly composed of several modules), and has those immutable OS benefits like trivial rollbacks.
IME, with flakes, yes. Fork nixpkgs and remove what you’re not using, manually cherry pick what you want. That’s not advice I’ve heard anyone give before, but it’s so nice to just have a a distro that is yours, and everything has a purpose. Not advice, just something that works for me on my personal machines.
I use both now. I find Nix more useful for server environments (and sandboxes). For interactive use, Bluefin/Bazzite are nicer since they tend to cater to their own happy path.
Cool! I had a friend using nixos as desktop daily (he also needed for development work at his company) and he ran int osome real usability issues, but which had nothing to do with the gui.
For example, we were at a wework, and he could *NOT* connect to the corporate wifi and had to just use the 'guest' access. The corporate network requires a cert and is tied to your wework account id. I could do it on Ubuntu by following instructions. He tried following the same instructions, me even helping him over his shoulder, and it just simply did not work, even after we walked through all the same steps that I had done on ubuntu. We were both on gnome desktops. And using similar devices. So something was wrong with how the OS handled the networking, not related to the GUI or hardware.
NixOS is very "unopinionated" and really quite shit after installation, there are a lot of things a normal distro would bundle and enable that nixos doesn't.
Your colleagues problem is not spending years on his config!
This seems great, and I think would be an amazing distribution, but it doesn't seem that much visible progress has been made in a long while. If there is indeed progress happening behind the scenes, it would be much better if the devs did this in a more visible fashion, and did some evangelizing to attract more contributors and traction.
To be fair, this is not just another flavor of Debian or fedora, but about a new promising strain, of which so far only a low number of flavors exist. So it might does add some value to the game.
I can't see any reason they couldn't go together. Fully using nix is a trip off the deep end of the learning curve, but there's nothing preventing a beginner using a predefined nixos configuration so long as they stay inside the guiderails. With a bit of care, it should even be possible to let them enable whole add-in .nix files to do things like "check this box to enable proprietary nvidia drivers" (which includes a predefined module that handles that).
Actually, I think nixos could be a wonderful base for a beginner friendly OS, by limiting the user to very specific configurations which have been well tested. Don't allow the user to shoot themselves in the foot. But if you allow the user to start writing or modifying nix configurations, then all bets are off.
I think it should be pretty easy to pick up for anyone who has experience with any other Linux distro, or even just experience with command line. The docs were clear and current when I got started with it.
having the raw power of nix/nixos hidden behind a normie friendly UI layer has insane potential. It basically eliminates any potential for horrible dependency conflicts and gives users an undo button for all but the deepest (i.e. bootloader / firmware) level changes to their system. nixpkgs is also the most comprehensive and up to date linux package set by a huge distance.
I can see something where nix is used for the immutable base, and then the user installs apps using flatpak or similar. Kinda like how fedora silver blue and other immutable distros work.
Arch has always been 'beginner friendly' according to Arch users, so why can't Nix? /s
But, yeah, Nix can be really nasty to troubleshoot because of the lack of information. The Nix documentation is still PITA, and the much of usual Linux guides (which are everywhere on the internet) won't apply to Nix systems. You have to learn a lot.
If what you want is a simple system with a web browser and some games, this should mostly work, but Fedora Silverblue would provide much more integrated and solid DE for that purpose. Being image-based release-based distro, it does offer pretty decent UX. Nix is rolling release, and everything is scattered just like Arch.
In fairness, nixos is way easier to setup than arch; it also has a stable channel. The sharp bits only come to bite when you want to touch nix-lang (eg. write a flake; create a new package etc.).
Yeah this is accurate. I've installed arch several times over the last decade and can mostly do it by heart without consulting the docs... but the amount of possible choices is just crazy and keeps going up.
Also, things like disk encryption is easy to get wrong, leading to another boot from the usb/mount everything/fix loop.
Nix has a graphical installer, which makes most of these choices for you. Different projects have added similar installers on top of Arch too, making its indtallation as easy.
That's the whole point of snowflake OS. You obviously didn't spend any time looking into the project. The idea is to have GUIs that configure the OS like any other distro, and write and build the Nix configs behind the scenes.
If you want to go beyond writing a configuration.nix then you don't want a beginner friendly anything. Configuration.nix does at least as much as any user-friendly operating system does.
Quite a lot of the beginner-unfriendliness of NixOS is from the need to write your own packages. It's got the biggest repo out of all distros, but it's still pretty easy to need software that isn't in nixpkgs. Even easier if you're developing software, since then you need a Nix derivation to have a development environment which can build your software.
A good editor and an LLM could maybe do something sort of useful for helping people customize packages. Used sparingly alongside programmatic generation of Nix code and old-fashioned templating, maybe it could even be reliable enough to be a win
For the vast majority of files, whether those are executables, config files, or libraries, nix doesn't just put them in standard locations for Linux systems, but instead puts them in /nix/store/ with a directory derived from a hash of all its inputs and dependencies. For example, I have mpv in the nix store at /nix/store/08a907bw4csdc44408a992lnc9v2802c-mpv-0.38.0 and this has the default config, the binaries, completions, libraries, etc.
Since the directory is titled based on the hash of the various inputs that go into building the package, when I run an upgrade it's not going to overwrite the old version of mpv, but instead it's going to put the new version in the nix store as well, at a different directory. Until you collect garbage, to clear out the old versions of things you're not using any more, nothing is deleted.
So while you can add and delete entries to the nix store, each entry itself is read-only once it's been built, and thus immutable.
What’s wrong with it? It’s really a good description of what it is and Nix users immediately recognize the association. It’s a great name if you are trying to attract Nix people.
As I'm sure you know, 'snowflake' has become a pejorative. But in the end I agree with you: that sarcastic usage is a recent and unimportant fad. Words have multiple connotations and those connotations are often context bound. And the intricacy and uniqueness of actual, literal, snowflakes are beautiful and interesting.
Nix is the Latin word for snow, hence its logo, and so a friendlier version/wrapper calling itself something snow-based in English seems very appropriate.
My non-lawyer understanding is that trademarks are pretty narrowly scoped; a database company and a Linux distro seem unlikely to be confused. So this is an excellent point, but maybe not the way you meant.
Trademarks are monitored by prepaid, cocksure corporate attorneys who generate expensive-to-respond-to paper ultimately subject to the whims of judges and juries.
It's often best to avoid a crowded space. Coconut and Swimwear/pajama vendors? Sure. Multi-billion dollar SaaS that hosts conferences? Maybe don't give them a reason to notice you.
Its a Nixos based Linux distribution where the Nix config and Nix flake is written for you and configured using a GUI. It attempts to bring the benefits of Nix to people who don't care to learn the insanity that the Nix language is (I say this as a full-time nixos user)
a Nix Flake is basically just a file to pin packages against a specific version (ie go.mod cargo.lock etc...) you then write a config that defines your system state and packages that you want to be available.
What's wrong with it? I'm not fond of the standard library (esp. the mkOverride and its friends), but the language itself feels fine. (Or am I just too used to it?)
Personally, I would've preferred statically-typed language with proper GADTs, but Nix is far from what I'd call "insanity". Malbodge is insanity, JavaScript is a mess (mainly because of its birth defects), Nix is... not a dream language, has a few odd bits that one needs to get used to, but feels quite okay.
I understand Nix the language if it is all in one file.
But try to call one file from another - it is confusing - the parameters are not explicit like a function call - they suddenly appear - adding more arguments is odd. Modules are not simple imports they add options and config to "help" you.
I do wish they had used a well documented language with some form of modules rather than invent their own idiosyncratic one.
Nix-the-language imports are dead simple: https://nixos.org/guides/nix-pills/05-functions-and-imports#... - `builtins.import ./foo.nix` makes it like we had `./foo.nix` copied and pasted in place of it. If we want to pass something, we make contents of `./foo.nix` a function (thus the frequently seen `import ./foo.nix {}` or `import ./foo.nix { inherit bar; }`).
Oh, and Flakes have inputs (which are closer to built-in module system, as IIRC Flake support is baked into Nix itself rather than being a part of Nixpkgs like the module system), which is another different convention, but it all boils down to using `builtins.import` somewhere deep down the chain, all extra semantics in the libraries.
Again, I would've preferred a language with module system built-in but it's not a bad design either - it's just minimalistic. IMHO, Ruby and Perl can be more confusing than this - and they're still sane (if we don't intentionally start having fun with their metaprogramming capabilities). But then Flakes probably wouldn't be a thing, so minimal core has its advantages too. Or disadvantages, as it all depends on the viewer.
Either way, it’s all well documented. I still forget how it works now and then, but that’s my memory/attention span problem rather than a Nix/Nixpkgs issue.
The language is absolutely not the problem. It's not a particularly difficult or complex language at all. In fact, it's pretty elegant and easy to understand the language. It's the things built on top of it that are difficult.
Presumably it comes from the aphorism "every snowflake is unique", which ties into Nix flakes as being uniquely identifiable units of distributed software.
I think Snowflake is an awesome project and addresses a lot of the complaints that newcomers have about NixOS.
However, I don't personally use it. I've used NixOS to build an OS that is exactly what I want, and I can easily reproduce it on any machine and seamlessly run any of my projects on any of my devices. It has completely solved dependency hell for me.
I don't exactly understand the complaints that Nix is hard to use. So is the C programming language. So is advanced mathematics. These things aren't meant for everyone to use. They are specific tools that solve specific problems and they do it well.
Personally I think Nix should be a lot smaller. I think it should be a small set of tools that allows you to build reproducible systems and avoid dependency hell, and not too much more then that. Everything else should be up to the user.
If you don't see the use, then there are so many other wonderful Linux distributions that will probably suit you better.
I don't mean to be too harsh, I just think Nix is one of the most incredible pieces of software I've ever used, and I get tired of the hate.
> I've used NixOS to build an OS that is exactly what I want, and I can easily reproduce it on any machine and seamlessly run any of my projects on any of my devices.
That's great, but you've already passed the steep learning curve, gotten familiar with all the tooling and concepts, and know how to troubleshoot things when they go wrong. For many new users of Nix, these are major hurdles for adoption.
The core principles of Nix are great: reproducibility, isolation, ability to revert to a previous state, etc. The problem is the UI to achieve all of that.
I haven't used SnowflakeOS, and it's the first time I'm hearing about it, but if it can have the same benefits of NixOS while making the UI friendlier for new users, then it's a huge win in my book. I think that all operating systems should have these features, whether Nix itself is the one to deliver them or not.
FWIW, I've used Nix(OS) for many years, and still can't say that I'm comfortable with it. It always takes me time to research and tinker when it behaves in unexpected ways, or to find out how to do a certain thing with it. This should just not be the case, even though it's partly on me for not sitting down to understand it thoroughly. The thing is that most people, even those technically minded, don't have that kind of patience. So anything developers can do to improve usability can bring these benefits to a larger user base, which is a noteworthy goal.
I agree and I totally get where you are coming from.
I tend to give my positive perspective about Nix whenever I see too much hate because I think it's really a wonderful tool, up there with git and emacs.
Sometimes the critiques I see are akin to "pointers in C are so confusing. I wish I had a nice GUI to be able to program with them". To me that critique misses the point of the power of the underlying software.
The last 3 times I tried to learn nix either
1. It just hasn't worked (excessive linking errors on macos)
2. Barrage of information. Should I use home manager? Use global config? I should be using overlays or flakes? There's too much going on and I've found too much conflicting information online.
I'm not going near nix probably for another 3 years. It has a lot to fix before I can invest time into trying to learn it yet again
This is very valid. There are some serious shortcomings with the documentation and a lot of choices to be made that can be overwhelming. However, it solves every problem I've had with package management so well that it was worth it for me to dive and slowly figure it out.
The site is bereft of details, but it appears to be related to https://snowfall.org, which has a little more detail.
I'm a user of Nix for about seven years and finally decided back in March, during the second rehash of $sponsor controversy, that I'll stop investing and move away from the tech as soon as I have a suitable replacement.
I've been critical of Nix for a variety of reasons along the way but one of those reasons is how so many people (and consultancies) seem hell-bent to set up their own little fiefdoms within the community.
The community is already niche, we certainly didn't need people purposely driving further fragmentation and incompatibility with these frameworks with bad bus factor and NIH designs.
I've seen a lot of tribalism and cargo culting around some of the other efforts in this vein, too.
I believe Snowflake is one of Jake Hamilton's projects. He's trying to make Nix more approachable through GUI tools etc.
Unfortunately, he's also part of the mob that chased the founder out of the Nix project and decided it should be yet another battleground for identity politics.
Like you, seeing the community entertain these stupid political fiefdoms makes me want nothing to do with NixOS.
However, I might stick with it out of laziness though until SteamOS runs on 3rd party hardware. The Jovian project is a Nix-based SteamOS clone that's been working well on my Legion Go, and I don't want to spend the time back in tinkerland finding something to replace it.
Let me be very direct - I disagree quite a lot with your characterizations in this post. If anything, I am probably much more closely aligned with Jake's "personal politics", since I also signed the first open letter about rejecting military sponsorship for future events. I felt the second open letter was not well thought out or well argued, so I didn't sign that one, but I do think it's clearly a net positive for Eelco to step way way back and that he has been in no way contributing to healing or progress during this debacle.
I resented people building fiefdoms because they're often commercially motivated and used to drive consulting engagements. They fragment the community on a deeply technical level, ruining code reuse and interoperability, for negligible technical improvements. I don't have any idea what the authors' views on project governance or human rights are, that wasn't a factor for me.
> it's clearly a net positive for Eelco to step way way back and that he has been in no way contributing to healing
Just let people do their thing. You’re not a bad person if you have nothing wise to say about people being hurt, and lots to say about resolving dependency constraints.
> fragment the community on a deeply technical level, ruining code reuse and interoperability
Most Nix consultancies I encounter make highly reusable flakes. flake-parts, flake-utils, fenix. They have a small commercial spot in their package’s namespace, and the first reason you look them up is “I wonder if they’re doing other smart Nix things that I can copy”, and they usually do.
You're not a bad person, but you might be a poor leader in that situation, which, as I understand it, is the main focus of the complaint. There's a difference between letting people do their thing, and letting them lead a large community of developers despite that not being their strength.
> in no way contributing to healing
> might be a poor leader in that situation
FUD.
https://discourse.nixos.org/t/nixos-foundation-board-giving-...
> While the foundation board was never intended to lead the community, we cannot deny that it is perceived to be in that role by many, and we therefore take full accountability. [...] Eelco is the principal author of Nix and undoubtedly a central figure in the ecosystem that grew around it. We confirm that Eelco showed no intention to be perceived as or act like the BDFL of the Nix ecosystem, or the Nix code base. *To commit to that in a timely manner, he has decided to formally step down from the board. This decision was made amicably and in mutual agreement with the board that this is the right thing to do.* Our collaboration was always characterised by our deep respect for Eelco’s work and our awareness of his lasting impact on our lives.
Fwiw, I'm not a Nix user nor am I really following the whole discussion here. I'm not trying to spread "FUD", just point out that there's a difference between "bad person" and "bad at the role one is currently in".
That said, as a complete outsider, the quote "the foundation board was never intended to lead the community" is wild to me. It sounds like the director of NASA going "I never intended this role to have anything to do with space". I think I understand the meaning behind the sentence - they wanted to support the community, but that the community leads itself in some way - but I can also see why the community would see them as having that leadership role that they apparently wanted to avoid. I also don't understand why someone who wanted a purely technical role would ever be on that board in the first place.
Like I said, I'm not really following this debacle, and I don't know the details. I'm just amazed at that quote, which seems very revealing to me.
> rejecting military sponsorship for future events
Presumably you reject everything supported by money from DARPA?
He's rejecting the sponsor, not the product
I always find this moral duality quite interesting, the product only exists because of the sponsor.
You seem to be unfamiliar with the situation, then. The sponsor wasn't for NixOS itself, but a related in-person event. NixOS had existed for literal decades prior to this.
No, it not because of "the" sponsor, but because of sponsoring in general. Replace the sponsor by any other company/institution/patreon/....
I highly doubt he would reject DARPA as a sponsor for NixOS. This was just celebrated by a bunch of safety people that have significant overlap with NixOS security goals: https://www.darpa.mil/program/translating-all-c-to-rust
Insert "yet you participate in society. curious!.jpg"
You don’t understand that meme. DARPA is direct military money for a bunch of tech people are happy with supporting. They just pretend it’s not the military so they don’t have to have any hard moral conflicts.
Oh I do. We're chatting now on an evolution of DARPA network. If anyone rejects all DARPA projects, they're not on the internet.
Yet you can be on the internet and make things a bit better by rejecting military sponsorship/influence in things you're involved in today.
I should have been more clear. This set of people that don’t like sponsorship from Boeing, Lockheed, etc would absolutely swoon over a DARPA grant.
In what way does rejecting military sponsorships make things better?
Gonna answer your question at face value.
Sponsorships are generally acknowledged with quid-pro-quo advertising opportunities - otherwise they'd be called silent donations.
In the case of tech conferences like the inciting incident, that means your logo everywhere, maybe an ad spot in between talks, and booth space. You might get some intangible reputational benefits from whatever other sponsors are present if they are viewed as highly prestigious or respected. Might even have opportunities to do a talk by one of your employees, we've all been to conferences where a vendor conspicuously also has a talk that coincidentally features their products heavily. All in all, it can elevate your perceived legitimacy in various ways.
Advertising might get you more business or more applicants and thereby grow your reach and success.
In terms of my personal values I'm a pacifist. I don't want to see something I like(d), something I made modest code contributions to, used to advertise for a commercial military organization that manufactures equipment for violence. It's the same way a vegan probably doesn't want to see advertisements by the beef farming industry or that someone who cares about renewable energy and sustainability doesn't want to see sponsorship by someone whose holdings are a huge stake in coal mining and fossil-fuel power plants.
In the case of the inciting incident, it wasn't a case of massive dollar amounts, it was ~$5k USD and it wouldn't have jeopardized the conference at all to say no thank you.
Yeah, it makes sense if you're a pure pacifist, the "all violence is wrong" -type.
I'm more of a pragmatic pacifist myself, which allows or even carefully supports violence for suppressing violence. I believe the USAF is generally speaking aligned with me on that. Which is why I'm not unhappy when they work with FOSS.
I think the opposite of pragmatic pacifism is the military-industrial market. The expansion and brinkmanship of weapons development brings out the absolute worst qualities in privately owned businesses. If you think lock-in is bad when it's your phone or email account, imagine how horny investors get suggesting DRM for hand grenades. This escalates because the goal of defense companies isn't to defend America, but to make as much money as they can get away with.
I'd like to think that I'm pragmatic as well, which is why I won't deny that NixOS would likely get used in conflict with or without event sponsor deals promoting it. However, if your in-person events pivot from a technically-focused gathering of like-minded individuals to a war council bankrolled by Anduril, I'd expect most attendees to be angry. Especially once you consider that the United States sponsors the export of weapons to countries that don't use violence for justifiable or proportional causes.
all you're doing is making DARPA funding have even more reach and success!
The second letter saying TL;DR "fuck you Eelco, kind regards". I'll never understand the motives here. Never. Please let me know when you've spent decades creating something and I'll be sure to shit all over you in kind.
What if, and hear me out, technical excellence and community stewardship are uncorrelated?
Meta-note to readers who are not completely familiar with the conflicts in the NixOS community. This is a good summary,
The NixOS Conflict in Under 5 Minutes
https://news.ycombinator.com/item?id=41126034
I don't know much about it but that summary seems completely unreliable:
* it reads like the result of 'there was a power struggle and my side lost'
* it falls back constantly to overly simple cause-and-effect answers to complicated problems
* it clearly is trying to paint certain people as villains and dissecting their imagined motivations while excusing or ignoring the motivations of others
Interesting, but not convinced of its impartiality. There's a strange attempt here to link labour union organising to social activism, which is incorrect and ahistorical. And also irrelevant to nix, which is a community rather than an employer.
Individual union organisers might also be social activists, but effective union organisers know that they need to a appeal to all employees regardless of their politics. And historically unions have been just as socially unreconstructed as companies, and subject to the same process of social activists pushing for their reform.
> Individual union organisers might also be social activists, but effective union organisers know that they need to a appeal to all employees regardless of their politics
One need only look at labor's reaction to the Teamster's president's speech at the RNC to realize that this is clearly not the case.
There are no impartial reporters, you gotta take it all in and decide for yourself.
When a person is deeply involved with something that turned into a conflict and then they write their history of it, as is the case with the link above, then I would say that framing them as a 'reporter' is not accurate.
Out of curiosity - what makes you think that the author of the link above, Chris McDonough (incidentally an author of the Pyramid Python web framework), is "deeply involved" with the NixOS conflict?
It is a firsthand account of someone in the community. They referenced no sources and gave a description of events based entirely on memory. They claimed their own involvement and interest in the outcomes.
Right, but I don't see a better way.
Do you think an outsider (ie. an impartial person) be able to provide a better summary?
Even as outsider has to get his info somehow, usually by interviewing those involved and then filtering stuff.
If the person is involved in a situation and recounts a history from their perspective it is not reporting. It doesn't matter whether you think they did a good job or not. A combatant in a war writing their evaluation of it afterwards is not 'reporting' and neither is what he did.
So now we're comparing the NixOS community to a warzone? Is it really that bad?
An analogy is not a literal comparison between two things. It is a way to describe something by pointing out relationships between things and comparing the relationships. It does not literally compare NixOS with a warzone.
Putting aside the accusations of activist ideology, this paragraph seems key:
> At a properly run company, if you are caught eating someone else's sandwich from the fridge, your boss will confront you and say "hey, Bob, don't eat Ted's sandwiches." That will be the end of it. In an organization with weak leadership, however, the entire company will receive an email from HR in the afternoon dictating a company-wide seminar on sandwich theft prevention, a #sandwich-theft chatroom will be created, posters depicting sandwich thieves in an encircled red X will appear on the walls, etc. The latter is more akin to what happened in the Nix case I outlined. There was no leadership in place to deal with an isolated sandwich theft, so it now needed to discuss policies with the goal of ending sandwich theft forever and punishing all sandwich thieves globally.
As an outsider, it looks like Nix had a weak leader who refused to mediate differences between people. He didn’t do what was right and just. His problem, and his irresponsibility, became everyone else’s problem and responsibility. A power vacuum but also a moral vacuum.
> As an outsider, it looks like Nix had a weak leader who refused to mediate differences between people.
As someone who closely observed all of this over the months, I can confirm that this was exactly the root cause of the whole issue. 4 out of 5 of these leaders eventually burnt out and quit.[^1]
The new governance structure, despite the rough start[^2], hopefully will solve that and create an actually caring leadership.
[^1]: https://old.reddit.com/r/NixOS/comments/1dqn9os/4_out_of_5_n...
[^2]: https://shealevy.com/blog/2024/05/08/broken-promises-the-nix...
Without knowing the specifics: I doubt a governance structure will produce good leadership. I've seen Rust people place their hopes in abstract, convoluted processes, and they've failed repeatedly.
Rather, I see the problem as character. The chosen leader(s) need the internal, personal qualities necessary for getting volunteers to cooperate well. External structure won't save the project if leaders lack character, it will just slow the damage they can wrought.
Relatedly, I was uncharitable before in emphasizing the weakness of Nix's leader. I think we all lack the moral (apolitical) education necessary for just leadership.
Why do these people always have to ruin good projects?
Power tripping. Ever wonder why projects become "foundations" with heavy emphasis on non technical bureaucratic bloat, committees, forums, "community managers" with way too much power and so on?
The main reason to become a foundation is to have some legal entity to deal with money. Some times projects get grants or donations or google summer of code mentor payments, and that can either go into a random account of whoever happened to be in contact with the donor, or it can be properly managed by a foundation with agreed-upon guidelines on where to store money and what it can be used on.
Because it is good and people want to do selfish things.
The end result is fragmented projects, worse developers and less activity. Congratulations. You got your social point across to the detriment of everyone.
[flagged]
[flagged]
> However, I might stick with it out of laziness though until SteamOS runs on 3rd party hardware.
It's unofficial and I've not personally tried it, but isn't that https://github.com/HoloISO/releases ?
Bazzite and ChimeraOS are good contenders for that use case if you weren’t aware of them, to the point that I am plannng on using one for setting up a system as a “gaming console” for a family member and an email howto should be good enough for minimal tech support on my part.
Just setup ChimeraOS on an 8845HS box this past weekend and really liking it. I do wish there were a few more emulators configured in the box, and there are some rough edges (the second activated controller is always controller 1 in games for some reason). It's been relatively nice all around.
I do wish there was some slightly better platform specific documentation though.
[flagged]
Thank you for illustrating the problem with the Nix community so succintly. When someone brings up those words, I know immediately to distance myself from them.
It's more a problem of society in general. Freedom (like power) is a two-edged sword. Some people get drunk on it.
+1
If they don't like fascists, why are they against the only serious anti-fascist force on this planet?
What's the only serious anti-fascist force?
I suppose that's the American led industrial military complex?
I bloody hate war and the military, but I have to agree with that one. While Russia, China & co. keep moving closer and closer to the fascism of pre-WWII world, the collective West seems to be the only force countering that, though parts of the US politics is showing signs of also falling into the seductive philosophy of fascism.
These people wouldn't know what a fascist was even if Hitler took a dump in their cornflakes.
Meaning of the word has been twisted and manipulated to refer to anyone who has a different opinion on something, to the benefit of actual neonazis and fascists.
I’ve noticed the same things, but I think it’s a symptom of Nix being so polarizing in the first place. I can’t think of another piece of software I dislike so much but I’m willing to put up with it because it’s just that good. Like I can’t wait for someone to come up with a better version. I suspect I’m not alone, and it causes some people to try to abstract away all the warts and sharp edges with these frameworks. Ultimately, it probably comes down to project leadership. There doesn’t seem to be a clear vision, consensus or anybody who can do some wrangling to get things going in a direction.
People have tried with things like guix and there's a few other Nix spinoffs.
The issue is that: Nix/NixOS is here and JUST good enough. So replacing it will be hard. What is come up with has to solve things so much better that the community who has invested in NixOS and others sees enough light that it is worth moving over.
That's gonna be rough. Given how hard nix (the language) is to deal with, I won't call it impossible, but... I will say, the successor is more likely to succeed if NixOS totally implodes, and I might go as far as to say... only if it implodes or offers substantial back compatibility so people can migrate.
As someone who has been vaguely watching the NixOS ecosystem, but never looked closely enough to see what those sharp edges are - is there a writeup somewhere, maybe a blog post or two, that goes over what's so good and bad about Nix?
The most common critiques I personally see are that the syntax and language is unappealing for many folks, and that the docs are pretty frequently some combination of sparse/haphazard/stale.
In my time I very often had to go read raw source to understand how to properly use some less-trivial constructs.
I have enough of an FP background to find the language tolerable but not yet pleasant, or even particularly capable. It's absolutely a fair thing to not enjoy.
The other major criticism that I think is even more defensible and less subjective is that incremental adoption is not very fun. Many things that are well supported on a mainstream Linux distro will not work OOTB in NixOS until some kind soul contributes the Nix-specific implementation of that thing. In some cases that's not even fundamentally possible. So you run into lots of cases where the first hit on a Google search will solve this thing if you're on Debian, but you're looking at hours of triage to do the same thing on NixOS instead.
I have plenty of examples about things that are uniquely possible with NixOS too, but I don't like to evangelize anymore.
The biggest one is: There's 1001 poorly documented ways to do things.
So until you learn to read nix, have a nix LSP etc. It is a major PITA.
You can be reading a .nix file and be like... "What the ... is that?"
And sadly, you know you'll inflict it on some poor person later.
I've never used a language server for Nix but I do use the repl. Are any of the language server implementations good these days?
I most frequently used https://github.com/oxalica/nil and there is a C++ one I haven't tried that reuses code directly from the NixCpp implementation.
It's not exactly a writeup or review, but Ian Henry's blog series How to Learn Nix captures the surprises, good and bad, that a newbie exploring Nix is likely to encounter.
Some of the problems he encounters may be outdated, as Nix and its documentation have both evolved since the start of the series. His experience is also somewhat shaped by his decision to rely solely on the documentation and the software itself for guidance, which he held to for quite a long time-- if you seek help from others earlier on you may get stumped less often. But overall it captures very well what getting to know Nix and its docs is like, including the emotional reactions to sharp edges.
https://ianthehenry.com/posts/how-to-learn-nix/
I've been in the ecosystem for years, including working with core maintainers and using it professionally in a large context. I'll just summarize what ultimately turned me away:
1. The community is extremely polarizing. Not just politically, but even from just being a general contributor. Depending on who reviews your PR, you can have a very pleasant experience to a downright demeaning one. I get that every community isn't perfect, but after years of dealing with generally the same problem people, I just quit contributing.
2. The Nix language itself is relatively simple to grasp, but for one reason or another people tend to build it up into a rat's nest that becomes nigh impossible to reverse engineer. Because of it's laziness, the error messages are generally unhelpful, and debugging is nothing but pure pain.
3. The thing that makes Nix great (reproducibility) is also it's greatest pain point. Depending on your language, your packaging experience may be simple to downright infuriating. At one point I just stopped packaging NodeJS/Typescript applications and resorted to other means (and this, of course, tended to anger the fanatics). Bottom line is that most software wasn't built with Nix's constraints in mind which means it's generally always a battle to get things packaged correctly.
4. The kingdom building has continued to be a major problem. Just watch the Nix Discourse for a week and you'll likely see the same problem space reinvented at least a few times. For whatever reason, in the Nix world, it feels like _everyone_ thinks they can do it better. This becomes a serious problem when it comes time to actually producing things in Nix. In my time using it professionally, I had to change "libraries" dozens of times due to lack of maintenance/abandonment. I swear each programming language must have a dozen different libraries for packaging, each with strange bugs and missing implementations.
I am one of the hopeful that something new and better will come out of Nix, but I have high doubts it will come from the community itself.
Exactly this. My NAS and hypervisor run on NixOS, but I'm probably going to replace them with Debian again once I get around to it.
Immutability and reproducibility are nice, but not nice enough to put up with the crazy.
> The community is extremely polarizing. Not just politically, but even from just being a general contributor. Depending on who reviews your PR, you can have a very pleasant experience to a downright demeaning one. I get that every community isn't perfect, but after years of dealing with generally the same problem people, I just quit contributing.
God, I feel this. I ended up just stop trying to seek help because most of the time I'd come across the MOST self-righteous people I've ever met.
I don't think Nix will ever be easy to use because half the community genuinely does not care about their fellow human beings enough to write software for their fellow human beings.
> I don't think Nix will ever be easy to use because half the community genuinely does not care about their fellow human beings enough to write software for their fellow human beings.
This matches my experience as well. I’ve been trying to use nix either as a system package manager, package manager, or OS since 2019. It was first recommended to me in 2016.
I’ve tried to use it for C++, Python, and Flutter development. I’ve tried to use it on MacOS and NixOS.
There doesn’t seem to be any use case where it’s usable for regular people. I can use it, sometimes, but more often than not it breaks and fixing it becomes the project over the project I was trying to use it for, before I have to give up and abandon it for conventional, less aspirational but actually usable tools.
Just the other day it broke because of a MacOS beta update. The suggested fix in a PR to reinstall it didn’t work. The uninstall instructions didn’t work. In the end, after some manual fidgeting and more ad hoc suggestions on PRs plus some informed guesswork on my part having to do with the ca store at various stages, I was able to restore my install to functioning.
Every time I ran the install it was text-based and filled my screen with intermediate commands and asked me whether it should execute some command that nobody but a POSIX skilled person would understand. Even after trying to tell it not to bother me.
The community has seemed obsessed with flakes that will fragment the ecosystem and lock nixpkgs into backwards compatibility (to some practical degree). Meanwhile when I tried to contribute back to nixpkgs, and an update broke my patch (a derivation that made specifying application derivations roughly as easy as homebrew), no one on the forums could tell me how to fix it.
Now it seems like the community, or some fraction of it, is chasing social perfection while their own tool is in such a half-baked state that I can’t recommend it to anybody, and almost nobody technical that I interact with recognizes it.
Meanwhile, in the time that nix has been…doing whatever it’s been doing, docker has become the de facto standard for reproducible environments. It’s hypothetically not as good, but practically it’s a whole lot easier to use, so now nix has to push back an entrenched competitor if it wants to become more than just this weird niche tool that nobody’s heard of.
I guess if the community doesn’t care if people use their work or not, I can’t blame them if they want to spend their free time on theoretical solutions. But it seems more inability to recognize other people’s hardships and arrogance rather than intentional neglect.
Someday I really hope someone figures this out, because having a cross-platform cross-purpose cross-language declarative package manager would be awesome.
EDIT: Also, one thing that’s bothered me about the recent Nix drama has been how they treat their “own” people. What I’ve heard or seen project leadership or moderation doing has come across as capricious, spiteful, and entitled towards people who have invested huge amounts of time into Nix; regardless of the politics of the individuals involved.
It’s turned me off from continuing to invest in Nix either as a contributor or a user (I was even questioning fixing my preexisting install, but I figured deciding on an alternative and switching right then would take more time). I’m hoping an alternative comes to light, or somehow I’ve misjudged the situation.
I've been having success with Silverblue as an alternative to NixOS (Bluefin, to be specific). Still using home-manager, but the stability has been just as good as LTS NixOS releases.
Every point matches my experiences to a T. Well said.
This matches what I see when I read the code base.
To answer the good part:
If you've used a normal linux distro and installed GNOME.. and then decided "That was dumb." and wanted to go back...and realize, you can't. There is no real way to get rid of Gnome sanely. (I can say the same of KDE and other massive packages.)
On Nix, I can, I just remove it from the configuration, and basically reapply my config. No damage done.
For tools I'll want to try out or maybe use 2 times in my life, I can just run them in shells that have them, and not add them.
This all adds up to a much more pleasant experience. I won't say flawless, but... it beats much of what is out there.
I do think people can take it to an extreme which isn't useful. I still have declarative dotfiles, unlike some.
But, for just managing the OS and packages. I've found nothing better. Realize: Things that are clusterfucks to package like python are still clustefucks. But... otherwise... 9/10 would install again, language can take a long walk off a short pier.
> only if it implodes or offers substantial back compatibility so people can migrate.
Yeah, at this point, any successor would have to be compatible with nixpkgs, which means to embed the nix language in some way.
My best migration experience is the vim->neovim one. It (almost) fully supports vimscript and yet runs Lua side-by-side, paving a great way to the full Lua adoption.
Replacing it is easy.
I replaced it by never using it, and just using traditional Linux and traditional configuration management.
Or for every use case where that setup sucks, using the containerization ecosystem of my choice instead.
I personally struggle to figure out where the combination of those tools is failing anyone where Nix comes in and saves the day. All I ever hear about it is that it's a great concept and a great thing ruined by excessive difficulty and too many downsides. In that sense I'd rather stick to the devil I know.
> I'm a user of Nix for about seven years and finally decided back in March, during the second rehash of $sponsor controversy, that I'll stop investing and move away from the tech as soon as I have a suitable replacement.
Same for me. We were exploring the use of it across our company for doing the building part of our containers, but the seeping in of identity politics made me rip the whole initiative up, it's simply too risky as you can see very likely paths towards fragmentation and disruption if you use this tech. Such a shame.
> seeping in of identity politics made me rip
"seeping in of treating everyone decently made me rip"
FTFY
Do you think everyone in the Nix situation was treated decently? That is a very interesting read.
People who violate the social contract to treat everyone decently aren't entitled to its protections. Duh.
oh your being sarcastic in the original post - sorry, I get it now. haha!
What about GUIX ?
I tried using it, but the slow-repos, and weird bugs on my laptop (which needs proprietary blobs) put me off. I very much would prefer using scheme to Nix lang but the eco-system is far smaller.
I really like the idea and architecture of GUIX and I find it like a better design overall than Nix... but unfortunately, being under the GNU, support for proprietary firmware and Operating Systems (i.e. Mac and Windows) makes it really hard for most of us who are using those systems and don't really feel like running a VM just to use whatever software.
I wish they had a separate spinoff that just made sure their software can run on Windows and MacOS, something like exists for emacs, but I think that the challenges are pretty big as they appear to rely on Linux-only APIs?
The challenges are more political than technological. They prefer not to compromise their choice to use only Free Software, which is their right, of course.
However, I've run into a GUIX person or two who frame it as a technical issue because something like macOS lacks a completely verifiable build chain (i.e., needing to use XCode to bootstrap). This is a factual statement, but not the real reason why support for macos/windows is absent.
What is the real reason then? Please enlighten me, because I have been blocked by these technical issues in my past attempts to bring Guix to macOS. Guix is built around glibc and there is no glibc port for macOS. Using XCode for everything is like replacing a bicycle drive train with a steam engine; I guess it's still a vehicle of some sort, but Theseus is still unhappy with his new ship.
You can use Guix on macOS with https://superkamiguru.org/projects/msg.html, but it's probably not what people want when they ask for macOS support.
> What is the real reason then?
Unwillingness to compromise, as you might recall from our last conversation on the topic. This is your right, but framing it as a technical problem is incorrect.
> there is no glibc port for macOS
https://formulae.brew.sh/formula/glibc clearly proves otherwise. It just can't be built to your satisfaction with complete verifiability.
> Using XCode for everything
You don't have to use it for everything, that's a straw man. If Guix-darwin was willing to accept some impurity, you could probably use XCode just enough to bootstrap a glibc and compiler chain, and then dispense with it.
Having a completely verifiable toolchain is a laudable political goal, not a technical requirement.
nix-darwin's existence clearly shows there are no technical obstacles to an equivalent guix-darwin.
Believe me, I wanted to like Guix. I'd prefer a Lisp over the nix language, easily. But I'm losing respect for the project based on its messengers.
The Homebrew package you linked is a Linux package. It doesn't build or run on macOS. It literally says 'Requires Linux' right there on the page.
Clearly we do not have a shared understanding of identity.
We don't have a shared understanding of something, because I don't know what you're referring to by "identity" there.
(If you're referring to "identity of who we're talking to", I can link you to our previous HN conversation, which is pretty similar to this one.)
Identity in this sense: https://en.wikipedia.org/wiki/Identity_(philosophy)
Humans already have ways to build software on macos, so why bother doing it with something called "Guix" if the thing that we would necessarily --- and for technical reasons --- end up with bears little resemblance to Guix? If someone sees value in that, enough to warrant converting resources to realize this value, they are welcome to do just that.
Note that we also have a way of using Guix as it is on macos via virtualization of Guix System. It also sits atop a large binary blob (the size of the native bits of the qemu closure), just like a macos-native bootstrap of the roots of the Guix graph does.
We're going around in circles now. I believe the Guix equivalent to something like nix-darwin would still be sufficiently guix-like (like a new language impl) to be worthwhile. You believe it wouldn't be guix, and iiuc, nothing short of your vision of guix would be guix, and since that can't be done from top-to-bottom on macOS, guix can't be done. I take it you don't view nix-darwin as nix?
And yet, the nature of identity is always in flux. You are not made up of the same atoms as when you were an infant. Many lines of code in a software project change, and yet it remains the same, ship-of-Theseus style.
Guix's identity could encompass a guix-darwin side project and still remain guix. You think of it as a technical issue, but it's only your choice of what guix means that entails that view. Which comes right back around to my assertion that no macOS support is fundamentally a political choice of guix's devs, not a technical problem.
> end up with bears little resemblance to Guix
Based on my experience with nix-darwin, this seems like exaggeration, and I think most others would agree.
> Note that we also have a way of using Guix as it is on macos via virtualization of Guix System. It also sits atop a large binary blob (the size of the native bits of the qemu closure), just like a macos-native bootstrap of the roots of the Guix graph does.
You are possibly the only person who is using "binary-blob-at-root" as equivalency criteria. Are you genuinely confused why macOS users aren't just using the Qemu Guix? Part of the appeal of nix/guix on mac is not having to pay the virtualization cost.
Guix has the nonguix channel, which provides the vanilla Linux kernel and other packages that contain blobs or nonfree parts: https://gitlab.com/nonguix/nonguix/
Do we just need a compromise-happy downstream of guix, much like ubuntu of debian?
Yeap, proprietary software and firmware are dealbreakers for me too.
I don't know much about the project but as an outsider it all just seems totally insane! People writing letters with screenshots of actions really? Liking a post becomes the equivalent to going on a political march or something? I can't help wonder if a lot of these problems would be avoided by more collaborative in person/talking and frankly more emotional awareness. It's all cognitive left-brain stuff - where is the emotional centre?
Moving to what?
Unfortunately still TBD. If I didn't have to support MacOS Guix would be somewhat attractive. I've also come around to enjoying systemd and have an Nvidia GPU in one machine, which are both things Guix doesn't wish to support either.
If Nix disappeared overnight I'd probably be using chezmoi to fill in somewhat for Home Manager and mise to fill in somewhat for devShells, and some ansible to try to fill the gaps, and fairly bitter about it.
I'm philosophically opposed to containers in the dev feedback loop, as I want native installation and performance for my language toolchains and editor and such.
The site you mentioned seem to just link to a bunch of GitHub repos. Neither site answers the questions new users care about the most, like why should I use this new OS and who are the people behind the project.
How ironic that the post for the beginner friendly OS isn't beginner friendly
Is this still being worked on?
The most recent commits in the pinned Github repos are two months old. For a project that considers itself "Alpha" and "Not yet ready for daily use" that's a pretty long time of inactivity.
In the non-pinned, non-auto updated repos, I see commits from two weeks ago.
Though the main contributors are pretty active with nixpkgs, so a lack of commits here doesn't necessarily mean they aren't working on improving snowflakeos, but working on getting improvements they need implemented upstream.
Sheesh. People have lives. Such an absurdly high standard we place on open source maintainers.
In the alpha stage
Also, how hard can it be to touch up on docs or some other small parts at least once a week? If you don't have the time for that maybe don't start a new project?
Maybe they’re moving. Maybe they’re on vacation. Maybe they’re getting married or divorced. Maybe a family member just died.
You want weekly doc updates? It’s open source my friend, make a PR or shut the hell up.
Thanks for making my point for me. This is an absurd standard.
“Don’t start a project uness you can commit to weekly updates for perpetuity.”
No need to be rude.
If someone creates a website for a project they are obviously trying to present it to potential users. That is at odds with not working on making the project actually usable.
But as a different comment suggested, the project does still seem to be worked on, so I remain hopeful we might one day see a user friendly NixOS derivative mature.
I was joking. However, as an open source maintainer myself I have had many people actually be rude to me for not doing X fast or often enough.
No one owes you anything. Even if they committed the sin of making a website for the project.
I maintain at least one reasonably large open source project myself and pride myself on our turnaround time. Our users/contributors don't need to wait weeks, months or even years until their issue is categorized, addressed and resolved. Of course part of this is staffing and domain dependent, but I do believe that marginal updates to a project (< once per week) is worse than quitting
Good for you. I have a life, and will never hold myself to such a standard. It's a side project I decided to give away for free. People can wait as long as it takes.
Yeah, I think it is still being worked on. It's only got a handful of contributors.
When I tried nix, I had the most utility from doing a nix-shell -p to get different envs for trying out different versions of apps/environments for dev work.
But for a full system, given universal blue and other variants (e.g. bazzite seems to be having a lot of success on the steam deck), does nix still make sense?
> for a full system ... does nix still make sense?
In many ways, Nix is often "second best at everything". -- Since Nix can be difficult to deal with, it may often be a better choice to use some other tool for any particular use case.
e.g. maybe using asdf is a better way to fetch tools (compared to nix-shell), or docker-compose is a simple way of running project-specific services locally (compared to devenv), or fedora silverblue is a simple way of running an immutable OS (compared to NixOS).
I'd like to think that the benefits from buying into Nix allow easily getting the advantages. e.g. Nix is a more expressive way to build a Docker image or a VM compared to using a Dockerfile or Packer.
For system wide configuration, NixOS allows system-wide configuration declared from a single starting point (possibly composed of several modules), and has those immutable OS benefits like trivial rollbacks.
IME, with flakes, yes. Fork nixpkgs and remove what you’re not using, manually cherry pick what you want. That’s not advice I’ve heard anyone give before, but it’s so nice to just have a a distro that is yours, and everything has a purpose. Not advice, just something that works for me on my personal machines.
nixos is unmatched as a server OS, and a lifestyle choice as a desktop distro
I use both now. I find Nix more useful for server environments (and sandboxes). For interactive use, Bluefin/Bazzite are nicer since they tend to cater to their own happy path.
Cool! I had a friend using nixos as desktop daily (he also needed for development work at his company) and he ran int osome real usability issues, but which had nothing to do with the gui.
For example, we were at a wework, and he could *NOT* connect to the corporate wifi and had to just use the 'guest' access. The corporate network requires a cert and is tied to your wework account id. I could do it on Ubuntu by following instructions. He tried following the same instructions, me even helping him over his shoulder, and it just simply did not work, even after we walked through all the same steps that I had done on ubuntu. We were both on gnome desktops. And using similar devices. So something was wrong with how the OS handled the networking, not related to the GUI or hardware.
NixOS is very "unopinionated" and really quite shit after installation, there are a lot of things a normal distro would bundle and enable that nixos doesn't.
Your colleagues problem is not spending years on his config!
Anecdotal evidence: A lot of the “normal” distros woild have the same problem 5-10 years ago.
This is a bit of an old video (11months) but it looks sleek https://www.youtube.com/watch?v=1XW3mMmN4VM
This seems great, and I think would be an amazing distribution, but it doesn't seem that much visible progress has been made in a long while. If there is indeed progress happening behind the scenes, it would be much better if the devs did this in a more visible fashion, and did some evangelizing to attract more contributors and traction.
Start & sell as a charity, cash in as a commercial enterprise. The #1 scam in vogue right now.
What does "charity" mean outside of the context of christianity?
Mismatching translation for non-profit, perhaps.
Tax exempt non-profit is what i meant. It insinuates to exist for public interest, not profit. Usually a foundation.
Sometimes it means gifting AWS all the profits from your FOSS labor.
oh great. Another distribution. I think we need more developments on the Desktop Environments and less on new distros
To be fair, this is not just another flavor of Debian or fedora, but about a new promising strain, of which so far only a low number of flavors exist. So it might does add some value to the game.
the words 'beginner friendly' and nixos don't belong anywhere near each other
I can't see any reason they couldn't go together. Fully using nix is a trip off the deep end of the learning curve, but there's nothing preventing a beginner using a predefined nixos configuration so long as they stay inside the guiderails. With a bit of care, it should even be possible to let them enable whole add-in .nix files to do things like "check this box to enable proprietary nvidia drivers" (which includes a predefined module that handles that).
Actually, I think nixos could be a wonderful base for a beginner friendly OS, by limiting the user to very specific configurations which have been well tested. Don't allow the user to shoot themselves in the foot. But if you allow the user to start writing or modifying nix configurations, then all bets are off.
I think it should be pretty easy to pick up for anyone who has experience with any other Linux distro, or even just experience with command line. The docs were clear and current when I got started with it.
having the raw power of nix/nixos hidden behind a normie friendly UI layer has insane potential. It basically eliminates any potential for horrible dependency conflicts and gives users an undo button for all but the deepest (i.e. bootloader / firmware) level changes to their system. nixpkgs is also the most comprehensive and up to date linux package set by a huge distance.
I can see something where nix is used for the immutable base, and then the user installs apps using flatpak or similar. Kinda like how fedora silver blue and other immutable distros work.
Arch has always been 'beginner friendly' according to Arch users, so why can't Nix? /s
But, yeah, Nix can be really nasty to troubleshoot because of the lack of information. The Nix documentation is still PITA, and the much of usual Linux guides (which are everywhere on the internet) won't apply to Nix systems. You have to learn a lot.
If what you want is a simple system with a web browser and some games, this should mostly work, but Fedora Silverblue would provide much more integrated and solid DE for that purpose. Being image-based release-based distro, it does offer pretty decent UX. Nix is rolling release, and everything is scattered just like Arch.
In fairness, nixos is way easier to setup than arch; it also has a stable channel. The sharp bits only come to bite when you want to touch nix-lang (eg. write a flake; create a new package etc.).
Yeah this is accurate. I've installed arch several times over the last decade and can mostly do it by heart without consulting the docs... but the amount of possible choices is just crazy and keeps going up.
Also, things like disk encryption is easy to get wrong, leading to another boot from the usb/mount everything/fix loop.
Nix has a graphical installer, which makes most of these choices for you. Different projects have added similar installers on top of Arch too, making its indtallation as easy.
And in actual use Arch is much simpler.
That's the whole point of snowflake OS. You obviously didn't spend any time looking into the project. The idea is to have GUIs that configure the OS like any other distro, and write and build the Nix configs behind the scenes.
Will the GUI write my custom package nixfile for me? Writing a configuration.nix isn't hard, but that's all that Snowflake sounds like it does.
If you want to go beyond writing a configuration.nix then you don't want a beginner friendly anything. Configuration.nix does at least as much as any user-friendly operating system does.
Quite a lot of the beginner-unfriendliness of NixOS is from the need to write your own packages. It's got the biggest repo out of all distros, but it's still pretty easy to need software that isn't in nixpkgs. Even easier if you're developing software, since then you need a Nix derivation to have a development environment which can build your software.
The goalposts isn't writing custom packages, it is accessibility and reproducibility benefits of NixOS to non-programmers.
> Will the GUI write my custom package nixfile for me?
What distro provides a GUI to write custom package specs for you?
A good editor and an LLM could maybe do something sort of useful for helping people customize packages. Used sparingly alongside programmatic generation of Nix code and old-fashioned templating, maybe it could even be reliable enough to be a win
I have zero experience with nix, but I understood it has good build tool that many people use.
But on what way nix is immutable I never know, anyone kind enough to explain ?
For the vast majority of files, whether those are executables, config files, or libraries, nix doesn't just put them in standard locations for Linux systems, but instead puts them in /nix/store/ with a directory derived from a hash of all its inputs and dependencies. For example, I have mpv in the nix store at /nix/store/08a907bw4csdc44408a992lnc9v2802c-mpv-0.38.0 and this has the default config, the binaries, completions, libraries, etc.
Since the directory is titled based on the hash of the various inputs that go into building the package, when I run an upgrade it's not going to overwrite the old version of mpv, but instead it's going to put the new version in the nix store as well, at a different directory. Until you collect garbage, to clear out the old versions of things you're not using any more, nothing is deleted.
So while you can add and delete entries to the nix store, each entry itself is read-only once it's been built, and thus immutable.
[flagged]
What’s wrong with it? It’s really a good description of what it is and Nix users immediately recognize the association. It’s a great name if you are trying to attract Nix people.
As I'm sure you know, 'snowflake' has become a pejorative. But in the end I agree with you: that sarcastic usage is a recent and unimportant fad. Words have multiple connotations and those connotations are often context bound. And the intricacy and uniqueness of actual, literal, snowflakes are beautiful and interesting.
[flagged]
Nix is the Latin word for snow, hence its logo, and so a friendlier version/wrapper calling itself something snow-based in English seems very appropriate.
It's a very common word. Why should one company be allowed to appropriate it?
The dozen entries at the US trademark office may offer guidance.
> US trademark office
Good suggestion, I'll get right on it after the Chinese, Indian and German office.
Yup, that's how it works... for obvious reasons.
My non-lawyer understanding is that trademarks are pretty narrowly scoped; a database company and a Linux distro seem unlikely to be confused. So this is an excellent point, but maybe not the way you meant.
Trademarks are monitored by prepaid, cocksure corporate attorneys who generate expensive-to-respond-to paper ultimately subject to the whims of judges and juries.
It's often best to avoid a crowded space. Coconut and Swimwear/pajama vendors? Sure. Multi-billion dollar SaaS that hosts conferences? Maybe don't give them a reason to notice you.
Ironically, the mere fact alone that there are so many different entries for one word offers its own form of guidance.
The existence of a dozen entries for that word reinforces my point...
Winter is coming.
I’m sure the flake/snow/water euphamisms are very clever but any ideas what this actually is or does?
Its a Nixos based Linux distribution where the Nix config and Nix flake is written for you and configured using a GUI. It attempts to bring the benefits of Nix to people who don't care to learn the insanity that the Nix language is (I say this as a full-time nixos user)
a Nix Flake is basically just a file to pin packages against a specific version (ie go.mod cargo.lock etc...) you then write a config that defines your system state and packages that you want to be available.
> learn the insanity that the Nix language is
What's wrong with it? I'm not fond of the standard library (esp. the mkOverride and its friends), but the language itself feels fine. (Or am I just too used to it?)
Personally, I would've preferred statically-typed language with proper GADTs, but Nix is far from what I'd call "insanity". Malbodge is insanity, JavaScript is a mess (mainly because of its birth defects), Nix is... not a dream language, has a few odd bits that one needs to get used to, but feels quite okay.
I understand Nix the language if it is all in one file.
But try to call one file from another - it is confusing - the parameters are not explicit like a function call - they suddenly appear - adding more arguments is odd. Modules are not simple imports they add options and config to "help" you.
I do wish they had used a well documented language with some form of modules rather than invent their own idiosyncratic one.
Nix-the-language imports are dead simple: https://nixos.org/guides/nix-pills/05-functions-and-imports#... - `builtins.import ./foo.nix` makes it like we had `./foo.nix` copied and pasted in place of it. If we want to pass something, we make contents of `./foo.nix` a function (thus the frequently seen `import ./foo.nix {}` or `import ./foo.nix { inherit bar; }`).
It’s the nixpkgs’ module convention system that is a little bit less straightforward as it relies on some conventions: https://nixos.wiki/wiki/NixOS_modules#Module_Imports_vs_buil...
Oh, and Flakes have inputs (which are closer to built-in module system, as IIRC Flake support is baked into Nix itself rather than being a part of Nixpkgs like the module system), which is another different convention, but it all boils down to using `builtins.import` somewhere deep down the chain, all extra semantics in the libraries.
Again, I would've preferred a language with module system built-in but it's not a bad design either - it's just minimalistic. IMHO, Ruby and Perl can be more confusing than this - and they're still sane (if we don't intentionally start having fun with their metaprogramming capabilities). But then Flakes probably wouldn't be a thing, so minimal core has its advantages too. Or disadvantages, as it all depends on the viewer.
Either way, it’s all well documented. I still forget how it works now and then, but that’s my memory/attention span problem rather than a Nix/Nixpkgs issue.
The language is absolutely not the problem. It's not a particularly difficult or complex language at all. In fact, it's pretty elegant and easy to understand the language. It's the things built on top of it that are difficult.
I like the core constructs and I think it looks beautiful, but it quickly becomes a mess. I agree though otherwise.
Presumably it comes from the aphorism "every snowflake is unique", which ties into Nix flakes as being uniquely identifiable units of distributed software.
I think Snowflake is an awesome project and addresses a lot of the complaints that newcomers have about NixOS.
However, I don't personally use it. I've used NixOS to build an OS that is exactly what I want, and I can easily reproduce it on any machine and seamlessly run any of my projects on any of my devices. It has completely solved dependency hell for me.
I don't exactly understand the complaints that Nix is hard to use. So is the C programming language. So is advanced mathematics. These things aren't meant for everyone to use. They are specific tools that solve specific problems and they do it well.
Personally I think Nix should be a lot smaller. I think it should be a small set of tools that allows you to build reproducible systems and avoid dependency hell, and not too much more then that. Everything else should be up to the user.
If you don't see the use, then there are so many other wonderful Linux distributions that will probably suit you better.
I don't mean to be too harsh, I just think Nix is one of the most incredible pieces of software I've ever used, and I get tired of the hate.
> I've used NixOS to build an OS that is exactly what I want, and I can easily reproduce it on any machine and seamlessly run any of my projects on any of my devices.
That's great, but you've already passed the steep learning curve, gotten familiar with all the tooling and concepts, and know how to troubleshoot things when they go wrong. For many new users of Nix, these are major hurdles for adoption.
The core principles of Nix are great: reproducibility, isolation, ability to revert to a previous state, etc. The problem is the UI to achieve all of that.
I haven't used SnowflakeOS, and it's the first time I'm hearing about it, but if it can have the same benefits of NixOS while making the UI friendlier for new users, then it's a huge win in my book. I think that all operating systems should have these features, whether Nix itself is the one to deliver them or not.
FWIW, I've used Nix(OS) for many years, and still can't say that I'm comfortable with it. It always takes me time to research and tinker when it behaves in unexpected ways, or to find out how to do a certain thing with it. This should just not be the case, even though it's partly on me for not sitting down to understand it thoroughly. The thing is that most people, even those technically minded, don't have that kind of patience. So anything developers can do to improve usability can bring these benefits to a larger user base, which is a noteworthy goal.
I agree and I totally get where you are coming from.
I tend to give my positive perspective about Nix whenever I see too much hate because I think it's really a wonderful tool, up there with git and emacs.
Sometimes the critiques I see are akin to "pointers in C are so confusing. I wish I had a nice GUI to be able to program with them". To me that critique misses the point of the power of the underlying software.
The last 3 times I tried to learn nix either 1. It just hasn't worked (excessive linking errors on macos) 2. Barrage of information. Should I use home manager? Use global config? I should be using overlays or flakes? There's too much going on and I've found too much conflicting information online.
I'm not going near nix probably for another 3 years. It has a lot to fix before I can invest time into trying to learn it yet again
This is very valid. There are some serious shortcomings with the documentation and a lot of choices to be made that can be overwhelming. However, it solves every problem I've had with package management so well that it was worth it for me to dive and slowly figure it out.