← Back to context

Comment by 0x457

3 days ago

1) Channels are hard to maintain (that's why overlays were introduced...)

2) Overlays only solve issue of adding your own packages to an existing channel

3) System channels and user channels are two different things.

4) Many times I've updated my home-manager profile and forgot to update system profile and it borked due to channels being out of sync (user error, but flakes remove that foot gun)

5) Very easy to have portable dev-env. If a system has nix installed, just typing `nix develop` in my repo would put you in the exactly same dev environment as me. In most cases it would byte for byte identical. I'm not going to tell you to install 100 of dependencies, not going to bother you with what application is written in, all you have to do to build it locally is to type `nix build .#`. I'm not even going to bother you how to run test because `nix check` will run them.

6) Flakes provide some schema, you know here nixos or home-manager modules would be.

7) Flakes are easy to compose together

8) I can have identical env on CI, production and my local machine without any extra overhead - flake.lock takes care of this.

All of this is extremely predictable: I got a new laptop, using nix-anywhere I've installed nixos on it, that had pretty much identical look and feel of my desktop. It all boils down to - channels suck and hard to use.