this post was submitted on 17 Jun 2023
9 points (90.9% liked)

Linux

48121 readers
700 users here now

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

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
 

Hey all, I'm wondering about giving NixOS a try. It seems like it's mostly marketed for development environments and CI, but I haven't seen much of anything about it being used on production servers. Right now I manage Alma 8 servers with Salt, and bootstrap Salt with a modified version of the ISO. NixOS seems like it could help streamline how I do things. Does anyone use it and have thoughts one way or another?

you are viewing a single comment's thread
view the rest of the comments
[–] highspire@sopuli.xyz 1 points 1 year ago (1 children)

Thank you for your extremely thoughtful response. One thing I need to research for myself is how user data, configuration, etc. is handled with a rollback. In MicroOS, the system itself is snapshotted by default (/etc for example) but user data (/home) is not. I would assume that a rollback would not touch the user data, so an upgrade could break that (e.g. database migration performed by a package update).

If you're always able to roll back, is taking the time to build and run a VM really worth it except for very critical maintenance windows? Does the VM just copy the nix config or the data too? Today, I use Vagrant for testing my Salt states. It does what I need.

I don't come from functional programming, but I'm sure I'll figure it out. Would have been nice for it not to have its own language, but I suppose that's most efficient instead of repurposing / abusing another language in a weird way.

[–] 2xsaiko@discuss.tchncs.de 1 points 1 year ago (1 children)

NixOS doesn't handle stateful application data at all (especially it doesn't touch home directories at all other than creating them, though there's home-manager if you wish to do that). But I think big incompatible updates are kept between major NixOS versions, at least for stuff like databases, and I've never ran into this being an issue, except for when I wrote some configuration to move some files to new locations and then wanted to roll back, but that's on me (and it was easy to cherry-pick the parts that used the new paths). Having snapshots for /var and so on might be a good idea, though personally I just keep daily backups of those directories.

The VM is less useful for testing package upgrades and other small changes and more for configuration you don't want to run on the actual server yet (such as when you're writing it at the moment and it's not complete and just want to test how much of it works), like testing software locally before pushing it to production. The VM build takes about as much time as building the normal configuration (and very short if that is already built). It produces a script which starts a QEMU VM using a blank disk file which it will reuse (of course, some services may fail due to missing keys). But I don't think that's a problem and it also kinda is another check that your system won't horribly fail if you ever want to reinstall it completely before restoring a backup.

[–] highspire@sopuli.xyz 1 points 1 year ago

Cool! Thank you. I appreciate the detail with which you write. I'm going to give this a shot, I think!