- cross-posted to:
- operating_systems@beehaw.org
- cross-posted to:
- operating_systems@beehaw.org
A new video from Nick at The Linux Experiment. I’m also sharing the PeerTube version for the sake of trying to expand my use of PeerTube and try to expand my video platform use beyond just YouTube.
NixOS is one of the few distros that legitimately offers something different. Some nice things:
- The entire OS install is managed through config files, so instead of dealing with a billion shitty DSLs, you only deal with one.
- Because of the above, builds are also reproducible.
- Because it ditches the FHS for the Nix store, you can do things like install multiple versions of the same library side-by-side, which is impossible with traditional Linux package management.
- It has the largest package repository of any Linux distro.
- Setting up dev environments is really nice because with Nix it’s like the entire OS has VirtualEnv.
- Because of the above, “it works on my machine” is an excuse of the past.
It’s very impressive and is a welcome innovation to the Linux ecosystem. Now if only they could improve the tooling and documentation.
I have been using a nixos build as my daily non work driver for a while now. As a DevOps guy, I appreciate the define once, build almost anywhere nature. When it is time to upgrade the laptop, just copy over the config and run. Then move over my personal data.
I know its not the same thing, but you can do that with ansible. I started building playbooks that do exactly that. I review/refresh the playbooks every couple of months, but I’ve tested it on VMs and its literally a curl command of a script I host on nextcloud. Then it runs that, installs ansible and does its thing.
There is a huge difference in the result. With NixOS you run a immutable system where ths main configuration is built during the startup and not editable during the run.
With Ansible you can generate the configuration as well for every run though. But in most cases you will write hard config files.
This is how I run my daily driver since a time. Coming from Redhat -> Suse -> Debian -> Gentoo -> Arch (-> Fedora) I feel very stable with NixOS.
The main system is NixOS with Flakes enabled, the user apps are installed with home-manager and on top a couple of desktop Flatpaks.
In between I did try to switch back to other distros taking less compilation time but there are so many features in Nix keeping me.
- the immutable system
- reproducible builds
- switchable generations
- easiness to maintain in a Git repo
- very fresh
I find Nix to be a really esoteric platform that completely inscrutable to a regular user. The people who do use it are extremely hostile to any tools that simplify the experience for the end user like Fleek. I would not recommend it for ANY regular user in any way, shape, or form.
Not my experience. It’s more like benevolent disinterest when it comes to users who can’t hack it on their own. The community is built around devops, functional programmers, as well as the odd enthusiast. Devops love it because it makes their work easier, functional programmer like its semantics and have no issue understanding it, and the odd enthusiast, well, is a hobbyist. If you’re not one of those groups you’re not catered for, it’s as simple as that. And as far as “make things easier for normies” is concerned: Much of that hinges on flakes not just stabilising but everything being switched over to them. The community isn’t going to start bending over backwards over features other people want to see, but not build themselves, but once the infrastructure is in place and it’s easy, heck, why not.
Yeah this is unfortunately true. I love NixOS and I use it constantly but I’m also a professional developer so it’s pretty easy for me. If I weren’t I imagine it would be close to impossible.
Unfortunately it’s very difficult to browse or understand how to use Nix, and the Nix language itself is quite opaque.
I love the results, but I wish it were done in … basically anything other than Nix.
Theoretically there is Gnu Guix, which uses Guile… I have no clue what support for it is like though.
Nice to see a Guix mention! It’s in flux but I appreciate it’s motivation and the hard work being done. One language, kernel agnostic, functional to the core. It’s gained some traction with the reproducible research builds crowd. It always makes me think of The Rise of Worse is Better.
Oh interesting, I haven’t heard of it – is it also for reproducible systems?
It’s basically the nix system but maintained by the Gnu folks. That’s about the extent of my knowledge honestly.
Yeah it’s really nice when you just need a simple package or service setup. Anything not so common or needing a different version of the package can make it 100x more difficult for a regular user to do.
“Seriously, NixOS is the new Arch when it comes to telling people you use it” …as an Arch user, I feel both attacked and intrigued.
But seriously, it’s pretty amazing how far the community has come now that having to use the package manager through the command line and editing config files is considered a significant barrier to entry. I’m interested to give it a try to see if the purported advantages with respect to reproducibility and portability are actually robust enough to suit my own use cases.
I have preferred NixOS for at least 4 or 5 years, it is really nice moving to another VPS you just drop config in and copy your data and it’s configured.
NixOS base + flatpak for Desktop apps sounds very interesting, one of the Linux Unplugged podcast hosts have been doing that setup for a while now, they also had a NixOS challenge some months ago
Is there a way to add the config of the current user to this cofig file?
What’s the point of a user config if they can’t change it themselves?
With NixOS you can install packages as a user without asking root, just don’t expect it to affect anything on the base system level, or for other users.
What’s the point of a user config if they can’t change it themselves?
Hmm, I’m not sure what you mean. Can you be more specific?
If you want something installed or configured system-wide, you do it in
/etc/nixos/configuration.nix
. Then, as a user of the system (or donning your user hat) you have your own configuration, local to$HOME
.Merging those would be rather pointless because the user can’t do that themselves, they’d have to ask
root
every time they change something.But that all said you might be looking for home manager.
Ah, got it. In that sense yes, but I’d like there to be a way to "push"current user configuration to the system wide one. How do you arrive at a good system wide configuration? By testing a cofiguration as a user and then deciding what works and what not, adjusting it and arriving at a result that you want now as a system wide.
In practice my system configuration is quite minimal, everything that can be installed as a user I install as user. It provides a login screen and DE selection menu (which only contains kde), a couple of daemons, such things, I literally don’t touch that files for months and months on end.