- cross-posted to:
- operating_systems@beehaw.org
- linux@lemmy.ml
- cross-posted to:
- operating_systems@beehaw.org
- linux@lemmy.ml
Nix ftw!
Been using it for a few years now, it’s freaking amazing.
- My laptop died, recovery was: 1. rebuild my system from git 2. load the backup data. Took me about 20 minutes to prepare everything, went on with my day and when I got back to the laptop it was right as I needed it.
- I need to target different Python version, with packages and everything, on different systems. Using nix I can a git version of a project to a Python environment, and it just works. Same with other languages.
- Rollbacks are epic for experiments.
- I can duplicate shared settings between computers, for example, I have a desktop PC and a laptop, both run the same DE, browser, email client, etc, all those goodies are defined from the same file. My server runs no DE, so its configuration file does not load the PC nix file.
Removed by mod
So how useful it is in practice?
How do updates work?
Can it play Crysis?
I’ve been on nix for only 2-3 days so take what I say with a grain of salt. I think it’s pretty useful. Back in Arch/EOS, I always find ways to mess up the system (I switched to Nix because of a failed system update on EOS). On Nix, it’s so easy to roll back and you don’t even need to use the terminal.
sudo nixos-rebuild switch --upgrade
There are (afaik) 3 channels you can choose: stable, unstable, and small(?). I’m staying on stable for now. Package manager is slower than pacman, imo, and it’s not as straightforward as Arch. Some programs (like kde connect) need to have service enabled in config.
Yes
So how useful it is in practice?
It can replace the need for docker.
Replit.com uses it for its VM environments. See: https://blog.replit.com/nix
So how useful it is in practice?
It’s useful for quite a few things in practise:
- You can be sure software that is packaged with nix will behave the same on different computers.
- You can avoid dependency conflicts.
- You can automate some things that would otherwise take multiple (mostly manual steps) on other systems.
This video shows off some of the cool things you can do with nix: https://youtube.com/watch?v=6Le0IbPRzOE&feature=share9
How do updates work?
You update a programming by specifying the latest version of a program in config and rebuilding.
You update the OS by pointing to the channel you want to use and rebuilding.
You can time travel back to a previous state if anything goes wrong.
Can it play Crysis?
I expect so, some people.do use nix for gaming.
Oh yeah, and how do you handle kernels?
You specify the kernal in the config and rebuild, reboot.
Here are the docs if you’re interested: https://nixos.wiki/wiki/Linux_kernel
Sweet, thanks. If I can configure kernel and modules, that is good enough to start with.
How long does it take for you to rebuild?
Rebuilding after adding a single program doesn’t take too long (depends on the program but often less than a minuet).
Rebuilding after upgrading the channel takes longer on my slow internet as many programs have version upgrades that need to be downloaded. I think it took 30-60mins last time. I imagine it would be faster with better internet.
You can be sure software {…} will behave the same
never had that issue before, as long as they have the same version and config
avoid dependency conflicts
I have those on Gentoo sometimes, possibly because I overloaded USE too much, but that’s not something I have to deal with on Debian/Mint.
You can time travel back to a previous state
wasn’t that possible before with snapshotting (btrfs/lvm)?
If it allowed me to avoid systemd, I would be willing to give it a go. Perhaps I will try it in a VM, but it’s not going on any baremetal for now.
Removed by mod
never had that issue before, as long as they have the same version and config
Then you are very lucky. “It worked on my machine” is a meme for a reason.
wasn’t that possible before with snapshotting (btrfs/lvm)?
I haven’t used snapshotting with those before. I guess the difference is that with nix it is done by the package manager by default, with btrfs/lvm you would have to set that up independently (please correct of this is not the case).