15
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 30 Jun 2023
15 points (94.1% liked)
Linux
48008 readers
869 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
- 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
founded 5 years ago
MODERATORS
Linux is Linux, nix is just a tool to essentially build a view of the root filesystem in a special way. In the end, it's not that different than if you do everything from Ansible playbooks, in a Dockerfile, from Puppet/Chef or any other automation technologies.
Heck, if you look closely at Debian/Ubuntu, there's the whole debconf system that lets you configure packages directly from the package manager, and it generates configuration files based of that. If you install Postfix on Debian, it's going to ask you how you want to use it and it generates some ready to use configuration files. Then if you install Dovecot, it might just work out of the box using that configuration to know how you set up Postfix and let you fetch your emails over IMAP. It's not nearly as comprehensive as nix does it, but the concept of a main configuration file is far from new, nix just pushed it to a whole other level.
Building packages also differ wildly between distros. ArchLinux uses simple PKGBUILD files that are essentially just bash scripts. Debian uses debhelper and dh_make, and lets you do some really crazy things with the build system to reduce boilerplate so that all Python packages for example are built exactly the same way and often in just a few lines.
Distros also put files in different places. On Debian, system-wide systemd units are in
/lib/systemd
, but it's/usr/lib/systemd
on Arch. Distros use different tools:apt
,yum
,dnf
,pacman
,pkg
, etc. Debian in particular really likes to ship with heavily customized configurations. For example, if you install NGINX on Debian or Ubuntu, you have a/etc/nginx/sites-{available,enabled}
and it's got a helper script to easily enable/disable a site. On Arch, there's no folders, you get a plain basic default/etc/nginx/nginx.conf
. On macOS, I have that config in/usr/local/etc/nginx/nginx.conf
. The default location of configuration files is inherently a compile-time property, just so happens that most distros puts it in the same place.I've worked with part-time admins / web developers that completely panic when they SSH into a system that's not Ubuntu and they don't know how to do anything.
If you like NixOS, just enjoy and you'll be fine. Completely different means of achieving the same things, and if anything will make you more aware of potential variations. Nothing preventing you from having VMs with more classical distros to keep up to date with how to admin those. A lot of things still work the same: you can still
systemctl restart
a service, you've still got a bash shell that works exactly the same. You're just going to manipulate and template nix files instead of directly modifying configuration files, but still ends up generating that file for the software to use.I use Arch for all my stuff, and Ubuntu at work. Because I use one doesn't make me not well versed in the others. NixOS have real advantages, and I know some companies that have fleets of NixOS servers.