Sure, a few things.
A small thing is that fetching from FlakeHub you’re not making requests that count against your GitHub rate limit.
semantic versioning
A major one is that FlakeHub URLs support semantic versioning rules in the URL. This works for users of any version of Nix, since at the end of the day they’re just URLs.
The immediate benefit here is that inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0";
will fetch the current stable release of Nixpkgs.
That is not comparable to inputs.nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-25.05";
, which will be stuck in time to the 25.05 release. Using FlakeHub for the stable input keeps you on the current stable automatically, every time you update your flake inputs.
Following semantic versioning rules, you can also specify a minimum version of nixpkgs. If you specify inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.858212";
(the current unstable NixOS release of nixpkgs) then you will always get a version of Nixpkgs that is at least that specific version.
That seems like a weird question: why isn’t it always 0.1.858212 exactly? Because it is a semantic versioning specifier. If you want 0.1.858212
exactly, you have to specify =0.1.858212
.
Isn’t that useless? No: it is possible to minimize a given flake and all its various required nixpkgs versions by locally solving the various defined requirements of of nixpkgs. This doesn’t currently happen today, but all the data is there to get it done. Concretely that means if you have 2 inputs, one with 0.1.858212
and one with 0.1.700000
the solver could unify this into a single flake input.
release records
Another bit of utility I frequently get from FlakeHub is using its archive of every release of Nixpkgs as a source of points to bisect. It is typically frustrating to bisect Nixpkgs unless you have a good idea of every time all the tests passed and the release actually happened.
Maybe this has changed since I last looked, but there is no convenient source of all the historical releases and when they were made. In contrast FlakeHub has a release recorded for every push, including the commit and date/time of the release.
checked flake validity
Occasionally over the last few years, the NixOS channel will advance with a broken flake.nix for some users. Our CI process validates that the flake works consistently before publishing. Nixpkgs’ CI itself has added this check, too, though occasionally the check has stopped working. In the future, I would expect us to add more checks, like making sure a certain (additional) subset of packages are built.
predictable updates
Our installer sets users’ nixpkgs on the CLI to point to nixpkgs-weekly. That flake is just a direct duplicate of Nixpkgs, but it only updates on Tuesdays. That means users only fetch a fresh nixpkgs once a week on Tuesday, and are then not stuck with random refetches throughout the week. We’ve heard from a lot of users who were frustrated by updates randomly interrupting their CLI workflows, appreciating that our weekly variant takes a lot of annoyance out of their day.
Anyway, here’s a few things I like about getting Nixpkgs from FlakeHub. If you don’t find it too compelling, no worries! FlakeHub isn’t doing anything specifically magical here, just a number of small enhancements that – for some users – add up to a nicer Nix experience.