4 ms·
I've never used NixOS, so I have no horse in this race, but I'm not sure this write-up is entirely fair. The first issue you describe is that you already have
by troad 3y ago
I've never used NixOS, so I have no horse in this race, but I'm not sure this write-up is entirely fair.
The first issue you describe is that you already have alternative Nix-like solutions in particular domains (R packages), and Nix let you continue using them. Is this not desirable though? You have the choice of letting Nix handle this, or carving out a Nix-less niche to continue using existing / more cross-compatible solutions.
The second issue is that support for games is weak in NixOS. But is this surprising? You're running games via emulation on a niche OS, where neither the game or the emulation tools you're using officially support NixOS. I'd say the fact NixOS can run these games at all is very impressive. Other alt-OSes, like Haiku, would not be able to do so.
The third issue is that you seem to need to edit /etc/hosts to be able to connect to captive portals on public WiFi. Do you? I'm on Linux, and I don't.
It honestly seems like Nix requires more tinkering than you were willing to do to get it set up, and that's an absolutely valid decision to make - it's the reason I don't use Arch, for example - but I feel like your article frames this as an issue with Nix, which seems a little disingenuous.
- nathanckim18 3y agoGreat comments, thanks for the feedback! Pretty much all your points are fair. I will just say that this post is just a personal reflection and not meant to degrade NixOS as a system for others, as I wrote near the end of the post. 100% agree with the point that it just required more tinkering than I was willing to work with. As for your specific points: 1. This is a bit off, Nix does not exactly let me continue using existing tools. NixOS' dependency system means that the R dependency management system I was using (renv) would not work on its own. renv would try to compile R libraries but would fail because it could not find dependencies I accept that Nix provides a way to handle this problem through buildFHSUserEnv, but the point I raised in the post was that buildFHSUserEnv feels hacky and unparadigmatic. I conceded, through additional NixOS configuration, that I couldn't use NixOS' store or use the NixOS recommended way of installing R libraries 2. Yep, not surprising at all, definitely to be expected. The point I wanted to make in the post was that NixOS makes it harder to tell whether it is a Linux or game-specific issue or if it is because of NixOS Also, even though it wasn't surprising in the least, it was still a major annoyance/frustration 3. Not all captive portals, most just used a 302 HTTP redirect which works without trouble, but some were weirder -- although I'm beginning to think that this was because I didn't have `networking.useDHCP = true` enabled, as I wrote in another comment
- btobolaski 3y agoI’ve been using nixos for a solid 2 years. I was introduced to nix 5 years ago when a developer at a company I worked for introduced it for one of the developer environments. In those 3 intervening years, I went from thinking that nix was incredibly stupid to thinking that nix had some good ideas and I should try it. All of that is to say, that I have some knowledge of nix. I think most of the criticisms are fair. Developer environments are my favorite usage of nix. To me, they deliver on the promise but, there’s a big caveat, dealing with languages that need native libraries is a real pain. The mentioned buildFHSUserEnv is basically a last resort. There are better solutions but they require a great deal more fiddling. I find that my start up time for getting a developer environment going is very long, sometimes 10x longer than just installing it in Ubuntu on a fresh vm. I find it is worthwhile to go through this process as I then don’t have to worry about being able to recreate it or switch between very incompatible projects. Luckily for me, the ecosystem that I frequently have to deal with this with is python and poetry2nix works pretty well (with some rough edges). mach-nix made this even easier but it is abandoned in favor of dream2nix which isn’t ready. The learning curve for nix is intense. It is incredibly unfamiliar and useful information is widely spread (the main documentation was too dense for me to comprehend when I started). Read the post, it seems to me that the author never got over the learning hump into it actually being useful. I think that is a perfectly rational choice, it isn’t the right thing for everyone. The one thing that kept me going through the first year of the learning process was one of the things that the author didn’t find important, being able to boot to a previous configuration. I don’t have to worry about updates that break something or making a bad configuration change. If I update my system and something breaks, at worst, I can simply reboot to revert to the previous configuration until I’m ready to troubleshoot the issue. Nix also does itself a disservice but not promoting flakes as the nix way. Using channels makes reproducibility much worse.
- kourtni 3y ago@btobolaski, I'm most interested in nix for creating reproducible dev environments. Do you have any public Python/Poetry2Nix projects on Github that I can look at?
- btobolaski 3y ago