this post was submitted on 03 Jul 2025
158 points (95.9% liked)

Linux

56022 readers
1550 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 6 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] traches@sh.itjust.works 35 points 1 day ago (38 children)

I like the idea of nixos, but I feel like it makes a bunch of daily sacrifices in order to optimize a task I do once every few years? I hardly ever get a new computer, but I install/uninstall/update/tweak packages on my system all the time. With a dotfile manager and snapshots, I get most of the benefit without any of the drawbacks.

[–] Flipper@feddit.org 7 points 1 day ago (18 children)

It also is an option to ensure everyone has the same dev environment.

[–] atzanteol@sh.itjust.works 9 points 1 day ago (17 children)
[–] Mihies@programming.dev 3 points 1 day ago (2 children)

The docker is not bare metal though.

[–] atzanteol@sh.itjust.works 3 points 1 day ago

sigh, yes it is.

[–] utopiah@lemmy.ml 4 points 1 day ago (2 children)

Does it matter if the overhead is practically irrelevant?

[–] trevor@lemmy.blahaj.zone 9 points 1 day ago (2 children)

The biggest downside to containers vs. Nix for me is that Nix can produce binaries for Linux and macOS, whereas docker only helps with Linux unless you can perform literal magic to cross-compile your project on Linux for macOS.

Containers also don't give you reproducible environments, and Nix does.

That said, Nix documentation is ass, so I usually end up going with containers because they require far less suffering to get working because writing a containerfile is much easier than guessing how to hobble together a Nix flake with a mostly undocumented language.

[–] utopiah@lemmy.ml 1 points 1 day ago (1 children)

Feels very arbitrary. Why would I care about say MacOS versus FreeBSD or say NeXTSTEP (just to be provocative)?

Anyway I'm being pulled away from the actual argument, the "bare metal" argument is about performances, isn't it?

[–] iopq@lemmy.world 2 points 13 hours ago* (last edited 13 hours ago) (1 children)

Yes, the systems people actually use vs every system that exists. Very arbitrary

[–] utopiah@lemmy.ml 1 points 10 hours ago

What I mean is that MacOS is proprietary and runs on specific hardware, it's by design not meant to be interoperable so it's not "just" popularity.

[–] atzanteol@sh.itjust.works 2 points 1 day ago (1 children)

Containers also don't give you reproducible environments, and Nix does.

Of course it does. 🙄

[–] trevor@lemmy.blahaj.zone 2 points 1 day ago (1 children)

Care to elaborate? Containers give you repeatable environments, which are not the same thing as reproducible environments.

[–] atzanteol@sh.itjust.works 0 points 1 day ago* (last edited 1 day ago) (1 children)
docker build . -t docker.company.com/build-env:1.0 && docker push docker.company.com/build-env:1.0

But for like 99% of development teams "repeatable" is Good Enough(tm).

[–] trevor@lemmy.blahaj.zone 4 points 1 day ago* (last edited 1 day ago) (2 children)

So, containers do not get you reproducibility.

For dev environments, repeatable is okay. If you want actually reproducible binaries that you can ship, Nix is better fit for that purpose.

[–] gedhrel@lemmy.world 1 points 13 hours ago (1 children)

I'm not quite sure why you fetishise a bit-for-bit over semantic equivalence. Doesn't it turn "it works on my machine" into "it works on my machine as long as it has this sha: ... "?

[–] trevor@lemmy.blahaj.zone 1 points 7 hours ago

I'm not quite sure why you think pointing out someone's confidently incorrect claim that containers do give you reproducible environments means that I fetishsize anything?

But if you genuinely want to know why reproducibility is valuable, take a look at https://reproducible-builds.org/.

I was quite happy to see that Debian and Arch have both made great strides into making tooling that enables reproducible packages in recent times. It's probable that, because of efforts like this, creating reproducible builds will become easier/possible on most Linux environments, including traditional container workflows.

For now though, Nix Flakes are much better at enabling reproducible builds of your software than traditional containers, if you can suffer through Nix not being documented very well. This article covers some more details on different build systems and compares them with Nix Flakes if you want more concrete examples.

FWIW, I think that containers are awesome, and using them for dev environments and CI tooling solves a lot of very real problems ("it works on my machine", cheap and easy cross-compilation for Linux systems, basic sandboxing, etc.) for people. I use containers for a lot of those reasons. But if I need to make something reproducible, there are better tools for the job.

[–] atzanteol@sh.itjust.works -3 points 1 day ago (1 children)

So, containers do not get you reproducibility.

You absolutely do. If you build a container and publish it you will pull down that exact thing every time. How is that not "reproducibility"?

You no what though? Scratch that - who gives a fuck? Bit-for-bit reproducibility takes far more effort than it's worth anyway. Even NixOS isn't completely reproducible. It's a false goal.

For dev environments, repeatable is okay.

It's well more than good enough you mean.

If you want actually reproducible binaries that you can ship, Nix is better fit for that purpose.

Nobody really needs that.

[–] Mihies@programming.dev 1 points 1 day ago (1 children)

It could if there are issues accessing hardware directly. Overhead is, as you said, not that important.

[–] utopiah@lemmy.ml 1 points 1 day ago

Isn't it what passthrough is for?

load more comments (14 replies)
load more comments (14 replies)
load more comments (33 replies)