NixOS sounds like ansible in OS form and that has never seemed appealing. Happy to hear why my impression is wrong though!
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0
I've been stuck on Nix for two weeks because I thought it would be a good idea to put a distro I had never used but that wouldn't break on my backup laptop in case my main one ever broke. I just couldn't force myself to install debian, not that I have anything against debian, it's just... kinda boring, while Nix seemed very interesting. IT SEEMED LIKE A GOOD IDEA AT THE TIME I SWEAR.
Guess what happened... I broke Arch. Then I reinstalled and the next day the laptop broke. Then the next day I tried to get my data back and the hard drive broke. So, backup laptop with Nix for two weeks...
- I really really really like the declarative stuff. Installing packages through config files is so nice I'll never lose track of what I've installed ever again 🥰 🥰 🥰 I was already using a git repo for all my config files + GNU Stow to symlink everything to its proper place, so adding the .nix configs to that setup was very easy.
- Having a clean system on rebuild is great. No more clutter left everywhere that I don't know about, no more half broken stuff left lying around.
But...
- It's not Arch. Not Nix's fault, but I kept hearing that it would be "like Arch but declarative"... and it's really not 😑 Everything seems over-complicated vs as simple as possible.
- I absolutely hate the language.
- What's with those error messages from hell???
- And speaking of hell, every language that can't just use indentations like YAML instead of cluttering the code with {} and [] and () should have been relegated to the darkest pit of hell 20 years ago. But points to Nix for being less awful than JSON (the comma on every line but not the last thingy make me want to build a time machine to go murder the grandparents of whoever thought it was a good idea)
- Packages are out of date even in the unstable branch (I know it's unfair since it's not trying to be a rolling release... but... but...)
- Where are the source packages? Is that an Arch only thing? I liked having packages that automatically use the latest git commit without needing to manually install from source and manually reinstall each time I want an update like a medieval peasant... 😭
- Nix packages are weird. Even someone who's terrible at coding like me can read Arch PKGBUILDS... I miss you Arch 😢
- Apps not working because of paths that don't exist on Nix... what do you mean I need to patch the package myself? 😭 But at least there's steam-run, great preserver of what's left of my sanity.
- ~~Can't wrap my head around installing some stuff like VSCode extensions (the advice I got was "don't bother just do it imperatively...)~~ (Edit: Finally figured it out!!!)
- Wiki is often sparse on info and not very helpful if you don't already know what you are doing (and I clearly don't 😅)
- Hidden configs. Some stuff works on its own like pipewire even though I haven't installed or configured it (I went with a minimal install that just gave me a tty then build from there, no DE), and how it's already configured is not in the default config files. It's very confusing not knowing why some stuff works and how it's configured by default.
But it's kinda growing on me. Like mold. Or cancer. Brain cancer.
I absolutely hate the language
Check out Guix_System_Distribution, it's just like NixOS but uses a Scheme dialect which is a better language.
I wonder what your thoughts on guix would be, especially considering your thoughts on the language
I'm just seeing your comment after I recommended Guix, that I could read and understand Guile Scheme is what made me hop away from NixOS, the nixlang is an ungrokable mess
I'm sure it'll get better once I'm more used to it, just venting a bit. Sorry for the rant
I found this very entertaining lol. And it also confirms I made the right choice not using Nix as my daily driver. This sounds like a headache.
You use a lot of emojis.
Yes emoji use is proportional to the decrease in my sanity after those two weeks
Relatable.
For rollbacks, I've been using Timeshift in Mint, and it has worked brilliantly.
I wonder why nobody has created a simple gui for Nixconfig.
Someone has done just that: https://github.com/snowfallorg/nixos-conf-editor It is part of https://snowflakeos.org/, though I don't know about its developments atm.
Something like this is really hard to make a gui for. I suppose a GUI would only be useful for discovering config values?
Either way, a gui would likely look like YAST on OpenSuse.
Skipped to the "ugly" part of the article and I kind of agree with the language being hard?
I think a bigger problem is that it's hard to find "best practices" because information is just scattered everywhere and search engines are terrible.
Like, the language itself is fairly simple and the tutorial is good. But it's a struggle when it comes to doing things like "how do I change the source of a package", "how do I compose two modules together" and "how do I add a repo to a flake so it's visible in my config". Most of this information comes from random discourse threads where the responder assumes you have a working knowledge of the part of the codebase they're taking about.
I always aim at packages and issued inside my nix config cuts all this hassle out atleast for me.. Ive got everything pretty meticulously commented and in order of boot process and in general running step by step order. I'm pretty sure I dumb monkey could figure out how it runs. I came from windows then mint then nix. To give you an idea of my PC knowledge. I think the whole point if nix is to keep the system contained and not scattered. I see many posters mentioning system scatter on nix as an issue and I have no idea how theu managed to complicate one if the simplest systems I've ever used as far as clean, tidy, goes.
Meanwhile me as a barbarian installing Debian and copying my ~/.bashrc
file (and a few others) if not just remounting /home/
in the new installation every few years.
One of my machines i've been just upgrading in place since debian 8. No need for new installation
Debian isn't barbaric at all.