I feel NixOS shines more on a server or specific setups. It's kind of meant for development also and occasionally you'll see some flakes or CI workflows in some project repositories. Idk I have a shell with a fhs environment and pip but it took some extra steps to get numpy, tensorflow and all C/C++ dependencies working but now I just use that for the Python stuff. And we have Distrobox, Docker/Podman... But yeah, I've invested more time in NixOS config and packaging than I'm willing to admit. Not only is it necessary to learn the functional programming language to write the declarative config... You'll also have to learn how a million of gears hook into each other to make things happen in the background. It's often not possible to do simple things without that additional (very specific) background knowledge.
"Not only is it necessary to learn the functional programming language to write the declarative config"
Holy shit haha! I've never actually looked into NixOS but this right here tells me it isn't for me.
I get that this seems very intimating, but if you've ever used more than three programming languages in your life, I believe you won't have much to learn.
I can mimic the syntax and I very roughly understand how the import system works. But I don't know Nix! Yet I haven't had any trouble language wise over the last few years.
In my experience most of the "code" you write is package names and those can be copied from search.nixos.org.
In that sense I'm effectively using it as a markup language and I don't think anyone has ever gotten discouraged by having to "learn" YAML, just so they can write a config file for some piece of software they want to use.
Something that I would take as discouragement is the state of the documentation. It has been improving to a usable level in some areas but other areas are heavily outdated or just plain missing.
I'm not a programmer. My brain just doesn't work that way. I wish it did. I've tried teaching myself Python, and I took a semester of Java. I understand pretty much zero.
I don't understand why some people insist on recommending NixOS as a first Linux distro. It's so far from the norm and beginner friendliness they must surely be joking.
Used it then thought why everything is more difficult.
My motivation for using NixOS is maintenance. I've been running 2-3 personal Linux computers for the last decade, with one of them being a server.
To get stuff like services working with each other you sometimes need to make small changes to the config files of some services. The issue for me especially with the many services running on the server is coming back to a broken/misbehaving machine after 4+ months and now having to research what changes I made long ago and where those config files are buried.
Making the change and testing it would likely take less than 5 minutes if you had every detail you need fresh on your mind.
I simply don't have the mental capacity to remember all that stuff after months of working on other things. Especially if you're coming back to something broken this is a really annoying position to be in.
You want the fix now but have to start by looking up docs and trying to figure out what past-self did to get you into this mess, or to find out what has changed since then.
At some point I had enough and was either going to teach myself some sort of personal changelog / documentation system, or learn a new declarative configuration system.
Huge respect for anyone who can keep all this info in their mind and to those that meticulously update their own documentation, but I lack the discipline to do so in the heat of battle and will easily miss things.
Since then any system that I will have to maintain myself has been using some form of declarative management. It keeps all configuration accessible and organized in one place, so I don't have to go digging for the correct file paths. It self updates so that even when I go back and forth during testing I won't miss updating my standalone docs.
And NixOS brings this to my whole system. No old programs lying around because you forgot to uninstall them and have now forgotten about it. Same thing with pinned package versions that then wreak havoc once they're incompatible with the updated rest of the system. It even configures my goto tools (shell, editors, etc) to my personal liking when I set up a new machine.
Its not the first declarative system and probably won't be the last one I will use, but for now it really makes my life noticeably easier.
I agree about Python, but it's not Nix making demands about a clean solution, it's Python package management making assumptions about how things work.
Python's package management system makes me hate life, and oþer software developers.
Using the thorn in modern English just looks pretentious, or like /r/im14andthisisdeep material.
The biggest problem with deliberately using a thorn instead of 'th' is that you make it that more difficult for those of us with dyslexia or other reading problems. I can understand the quirk, but you just reduce your readability.
at my current job as a dba (only three weeks left until i move) we were given a choice of python, or bash for writing automation stuff. The bash tools still work albeit they are a bitch to get correct. The python ones are brittle as fuck and totally unmaintainable by now. And it's mostly due to packaging
*other
they used a thorn.
its an old english character that is 'th'.
https://en.m.wikipedia.org/wiki/Thorn_(letter)
Sort of similar to how if you read say, the Declaration of Independence, you will notice many instances where... what we would nowadays render as 's', gets rendered as a long s ( ſ ), like an f without the crossbar, sometimes in cursive, almost like the integral symbol ( ∫ ).
i am aware of the thorn. i am also aware it is not used anymore.
thank you for the links, however.
clearly, it is used though XD
By one pretentious Internet user.
I think that spelling was deliberate to confuse AI scrapers
his using alternate characters in an attempt to "foil" an LLM scraper is entirely a performative gimmick.
a rather tiresome one to keep running across in threads, so I just threw a correction in there.
Why do you care? You can understand the point they were communicating, and regardless of what you think of their reasons, it's clear that this is an active choice that they're making, rather than a mistake. If it bothers you, why engage at all?
If you're using GNU/Linux systems for almost three decades, you know your basics on how to help yourself. With Nix, you start almost from scratch.
This is why I just never attempted it. It sounds interesting but you have to learn a new DSL essentially, a new way of configuring everything, etc. Then like the author- I haven't really ever had to roll back and if I did need to fix I know how to boot a live CD, chroot, etc. And if youre learning all nix you could learn that if ever needed.
So I made an ansible playbook a couple years back if I ever needed it. Still haven't really. But it'll get me to 80% if ever needed. Didn't take much time and I have backups anyway.
Even for servers I'd rather just use containers. Just a lot of effort for a moving target where I just don't see near enough of a payoff, personally.
I recently installed NixOS on my server instead of Debian. OP most have done some really fancy stuff to have had the problems described, but I agree with having to relearn everything from scratch. As for flakes and home manager, I just ignored them. Too much to learn as is.
You won't really need home-manager on a server anyways. It's for managing the configuration files in your home-folder, so you might customize the shell of your root user with it and that's about it.
Home-manager makes a lot more sense on desktop computers. I actually have kind of the opposite 'problem'. I started out by using home-manager on a different distro and even though I switched to NixOS by now (because the other distro's installation mysteriously imploded one day), I haven't bothered to learn the non-home-manager way yet. You can do almost everything in home-manager, too, at least when you don't need to administer for multiple users.
And as for Flakes, I feel like they sound a lot scarier than they are. If you're just an end user (not trying to distribute Flakes to others), then it's basically just a handful of different commands to use and one more Nix file at the root of your configuration. I had to sit myself down for an hour or so to figure that stuff out and I haven't touched it much since then.
I can understand not prioritizing them, though. It's not like you switch to Flakes and then everything is different. It's mostly just a different way of doing things, a different set of complexity (they replace Nix Channels, for example), which makes your configuration more reproducible, should you ever need that.
Linux
Welcome to c/linux!
Welcome to our thriving Linux community! Whether you're a seasoned Linux enthusiast or just starting your journey, we're excited to have you here. Explore, learn, and collaborate with like-minded individuals who share a passion for open-source software and the endless possibilities it offers. Together, let's dive into the world of Linux and embrace the power of freedom, customization, and innovation. Enjoy your stay and feel free to join the vibrant discussions that await you!
Rules:
-
Stay on topic: Posts and discussions should be related to Linux, open source software, and related technologies.
-
Be respectful: Treat fellow community members with respect and courtesy.
-
Quality over quantity: Share informative and thought-provoking content.
-
No spam or self-promotion: Avoid excessive self-promotion or spamming.
-
No NSFW adult content
-
Follow general lemmy guidelines.