# A call for the Nix team to present a unified front on the outcome and strategy around Nix flakes

**URL:** https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959
**Category:** Nix
**Created:** [October 26, 2024, 12:18am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959 "2024-10-26T00:18:27Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 12:18am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/1 "2024-10-26T00:18:27Z")

</div>

> [@Announcing Determinate Nix](https://discourse.nixos.org/t/announcing-determinate-nix/54709/71):
>
> I’d even go as far as saying that if Determinate Systems buys into flakes so much that they’re willing to guarantee stability, and they and their users are fine with the trade-offs involved, it may as well be a downstream-only feature.

Valentin, if you truly mean that – and I hope you don’t – then fine. If that is what it takes to get clarity for Nix’s users about the status of flakes, then please: rip the bandaid off and call it done. Determinate will be the flag-bearer of flakes, and Nix can go on without them.

However, again, I hope you don’t. Because the data makes that look like a pretty crummy choice. Users have overwhelmingly chosen flakes. Flakes are the only axis on which new usage is really growing:

 ![New GitHub repositories per day, by preferred Nix entry point](https://discourse.nixos.org/uploads/default/original/3X/8/e/8e03dddec5c2bbe980902dddac2081656c26fb2a.jpeg)

…

And looking at raw numbers isn’t very compelling, new repositories per day that aren’t flakes is flat over more than two years:

 ![New GitHub repositories with a meaningful, non-compat-shim default.nix / shell.nix](https://discourse.nixos.org/uploads/default/original/3X/c/6/c65f94260e52b81e6e51c61b605bb08c114bae19.jpeg)

This is not a theoretical question or scenario anymore. This is a problem, and I feel dancing around it is not serving anybody well.

Like I said at NixCon last year: my only hope is the project chooses one way or another. Because not choosing is the worst option, and hurts everybody.

---

<div class="post-metadata">

### Author: ![ElvishJerricco](https://discourse.nixos.org/user_avatar/discourse.nixos.org/elvishjerricco/32/984_2.png) [@ElvishJerricco](https://discourse.nixos.org/u/ElvishJerricco)
#### Post date: [October 26, 2024, 1:24am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/2 "2024-10-26T01:24:43Z")

</div>

I do wish you would perform this measurement with a filter more meaningful than `default.nix || shell.nix`. I would just count repos with any nix files that don’t have a `flake.nix` file. I’m sure that’s somewhat common with files like `configuration.nix`, `package.nix`, `$cabal_package_name.nix`, etc. I mean I still wouldn’t be surprised if flakes end up more popular by that metric, but it’s very annoying that you keep using this flawed measurement.

---

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 1:46am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/3 "2024-10-26T01:46:49Z")

</div>

> [@ElvishJerricco](#):
>
> it’s very annoying that you keep using this flawed measurement

Respectfully, I don’t think it matters very much. I’m sure I’m missing some percentage repositories in both sets that don’t put their flake.nix in the root, or use a differently named .nix.

At this point, I think the situation is less about absolute numbers, and more the Nix project taking ownership over what it wants, freeing the community from this miserable scenario, and make a decision that could end this whole argument with the stroke of a keyboard.

If that means the Nix project says goodbye to flakes – ok! I think that is a bad idea, but ok!

---

<div class="post-metadata">

### Author: ![ElvishJerricco](https://discourse.nixos.org/user_avatar/discourse.nixos.org/elvishjerricco/32/984_2.png) [@ElvishJerricco](https://discourse.nixos.org/u/ElvishJerricco)
#### Post date: [October 26, 2024, 1:48am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/4 "2024-10-26T01:48:17Z")

</div>

> [@grahamc](#):
>
> At this point, I think the situation is less about absolute numbers

Respectfully, then I wish you wouldn’t have used numbers to make your point, especially since the numbers are flawed (probably not by too terribly much, but we’ll never know if you don’t redo the measurement)

---

<div class="post-metadata">

### Author: ![crertel](https://discourse.nixos.org/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@crertel](https://discourse.nixos.org/u/crertel)
#### Post date: [October 26, 2024, 2:10am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/5 "2024-10-26T02:10:05Z")

</div>

If you have better numbers, you’re of course welcome to present them.

---

<div class="post-metadata">

### Author: ![domenkozar](https://discourse.nixos.org/user_avatar/discourse.nixos.org/domenkozar/32/38357_2.png) [@domenkozar](https://discourse.nixos.org/u/domenkozar)
#### Post date: [October 26, 2024, 7:54am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/6 "2024-10-26T07:54:09Z")

</div>

Hey @grahamc, any chance you can put `devenv.nix` on this graph?

---

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 10:57am UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/7 "2024-10-26T10:57:13Z")

</div>

I’ll try to! Right now, the throughput to collect the data is …challenging… it currently takes over an hour to process two hours of new repositories.

---

<div class="post-metadata">

### Author: ![domenkozar](https://discourse.nixos.org/user_avatar/discourse.nixos.org/domenkozar/32/38357_2.png) [@domenkozar](https://discourse.nixos.org/u/domenkozar)
#### Post date: [October 26, 2024, 12:22pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/8 "2024-10-26T12:22:25Z")

</div>

Fair enough, is there source code?

---

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 12:54pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/9 "2024-10-26T12:54:37Z")

</div>

mmm…not easily, it’s pretty tied up with some internal metrics tooling we have. I’ll chat with the team on monday if it’d be reasonably easy to break out a useful chunk.

---

<div class="post-metadata">

### Author: ![samrose](https://discourse.nixos.org/user_avatar/discourse.nixos.org/samrose/32/29177_2.png) [@samrose](https://discourse.nixos.org/u/samrose)
#### Post date: [October 26, 2024, 3:23pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/10 "2024-10-26T15:23:14Z")

</div>

@domenkozar

I did a quick experiment and was able to get data like this

 ![Screenshot 2024-10-26 at 11.20.17 AM](https://discourse.nixos.org/uploads/default/original/3X/6/4/64911a186537a49f313d38dd8aabd3156b121705.jpeg)

From using a postgres fdw [GitHub plugin | Steampipe Hub](https://hub.steampipe.io/plugins/turbot/github#documentation) and [github\_search\_code table | GitHub plugin | Steampipe Hub](https://hub.steampipe.io/plugins/turbot/github/tables/github_search_code)

However I did not take the time to figure out github api rate limiting and pagination. postgres steampipe cli tool or foreign data wrapper can take some of the steps out of retrieving api results like this.

my query was just

```auto
SELECT
    *
FROM
    github_search_code
WHERE
    query = 'filename:devenv.nix'

```

but could be expanded on with various rules, probably can filter on json responses about repo data like stars on repo etc etc haven’t tried it yet.

---

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 3:24pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/11 "2024-10-26T15:24:41Z")

</div>

Oh man, this might obviate our horrible hack of data collecting :o!

---

<div class="post-metadata">

### Author: ![samrose](https://discourse.nixos.org/user_avatar/discourse.nixos.org/samrose/32/29177_2.png) [@samrose](https://discourse.nixos.org/u/samrose)
#### Post date: [October 26, 2024, 3:25pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/12 "2024-10-26T15:25:30Z")

</div>

@grahamc could be, but a showstopper maybe might be dealing with rate limits and pagination.

---

<div class="post-metadata">

### Author: ![samrose](https://discourse.nixos.org/user_avatar/discourse.nixos.org/samrose/32/29177_2.png) [@samrose](https://discourse.nixos.org/u/samrose)
#### Post date: [October 26, 2024, 3:25pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/13 "2024-10-26T15:25:59Z")

</div>

(or at least a pain point could be …)

---

<div class="post-metadata">

### Author: ![proofconstruction](https://discourse.nixos.org/user_avatar/discourse.nixos.org/proofconstruction/32/9615_2.png) [@proofconstruction](https://discourse.nixos.org/u/proofconstruction)
#### Post date: [October 26, 2024, 3:26pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/14 "2024-10-26T15:26:54Z")

</div>

I submit that “popular” does not mean “good” or even “preferred”, and that in any case the aim of the Nix Team should not be _product development_ for the masses but rather _library development_ for use by other components of the ecosystem. Given the industry and this community’s problem with cargo-culting over understanding, this apparent popularity is instead an expected outcome from the proliferation of flakes-first Nix guides. I myself have followed many of these - including some produced by your team! - in the interest of getting things running quickly without needing to spelunk in the manuals, and until recently used a flake as the entrypoint to my own multi-platform configs. Flakes are a convenient UX over the Nix core features, and should be developed alongside - _outside_ - the core. I broadly agree with Valentin on this point, though I would prefer the flake bits remain owned by the NixOS organization, to be developed not by the existing Nix Team but by a yet-to-be-created UX Team.

If flakes - which are not even _functions_ - become the default unit of composition _within the core Nix implementation_, then we will have discarded a crowning achievement of computer science as a discipline, and as I have said elsewhere we should then return to the original thesis and consider a ground-up rework, with the knowledge gained from the past 18 years.

---

<div class="post-metadata">

### Author: ![grahamc](https://discourse.nixos.org/user_avatar/discourse.nixos.org/grahamc/32/75_2.png) [@grahamc](https://discourse.nixos.org/u/grahamc)
#### Post date: [October 26, 2024, 3:47pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/16 "2024-10-26T15:47:30Z")

</div>

> [@nrdxp](#):
>
> Flakes are fundamentally broken, they do nothing to solve the actual, unique problems we face in needing a format to distribute and organize Nix code.

I genuinely mean this: if the Nix team thinks flakes should be removed, then they should choose that and go for it. This middle ground of _not choosing_ is the biggest problem.

Personally, I think it is a mistake to remove them, but at this point – like I told Valentin a year ago, any choice is better than no choice.

---

<div class="post-metadata">

### Author: ![Balssh](https://discourse.nixos.org/user_avatar/discourse.nixos.org/balssh/32/28813_2.png) [@Balssh](https://discourse.nixos.org/u/Balssh)
#### Post date: [October 26, 2024, 4:00pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/17 "2024-10-26T16:00:07Z")

</div>

Completely agree that a choice is better than no-choice. As a newcomer to nix/nixos it was confusing learning about how flakes are still experimental but almost every piece of info I’ve read nix recommended using them.

---

<div class="post-metadata">

### Author: ![waffle8946](https://discourse.nixos.org/user_avatar/discourse.nixos.org/waffle8946/32/27221_2.png) [@waffle8946](https://discourse.nixos.org/u/waffle8946)
#### Post date: [October 26, 2024, 4:07pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/18 "2024-10-26T16:07:28Z")

</div>

> [@Balssh](#):
>
> almost every piece of info I’ve read nix recommended using them.

Of course, because Eelco, Graham, and their company detsys have been marketing them hard for years.

They are nevertheless terrible, not only did the problems I mentioned a year ago still exist:

> [@Experimental does not mean unstable: DetSys's perspective on Nix flakes](https://discourse.nixos.org/t/experimental-does-not-mean-unstable-detsyss-perspective-on-nix-flakes/32703/7):
>
> Experimental should mean unstable, there are such good opportunities to make breaking changes that would make flakes better. As it is, flakes are stalled without even being released… I also think it’s a shame that the better CLI is locked behind flakes. It would be nice to bring those improvements to everyone. Flakes are not the only way to handle lockfiles, nor did they need to be. As far as I’m concerned, flakes are just a terrible lockfile spec. I see your company wants to monopolise the …

Performance has now even dropped (!) due to the introduction of libgit2, which prompted me to leave nix behind entirely.

---

<div class="post-metadata">

### Author: ![Balssh](https://discourse.nixos.org/user_avatar/discourse.nixos.org/balssh/32/28813_2.png) [@Balssh](https://discourse.nixos.org/u/Balssh)
#### Post date: [October 26, 2024, 4:14pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/19 "2024-10-26T16:14:02Z")

</div>

> Of course, because Eelco, Graham, and their company detsys have been marketing them hard for years.  
> They are nevertheless terrible, not only did the problems I mentioned a year ago still exist:

As I’m not familiar about the pros/cons of flakes, I’m not gonna comment on that, but then there is this problem: as a newcomer I have to choose between a “terrible” implementation that has good documentation and a “good/proper” implementation that has abysmal documentation. Isn’t it obvious which will be chosen?

In my limited view of the situation this seems like a failure from the nix community to properly put out a documentation sane enough for anyone to be able to get things going fast.

---

<div class="post-metadata">

### Author: ![waffle8946](https://discourse.nixos.org/user_avatar/discourse.nixos.org/waffle8946/32/27221_2.png) [@waffle8946](https://discourse.nixos.org/u/waffle8946)
#### Post date: [October 26, 2024, 4:15pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/20 "2024-10-26T16:15:54Z")

</div>

What is this “good” implementation? I’d love to see it.

And you’ll have to ask the docs team about docs, they refuse to document flakes intentionally for reasons I don’t have insight into. But the _community_ has documented flakes to death.

---

<div class="post-metadata">

### Author: ![Balssh](https://discourse.nixos.org/user_avatar/discourse.nixos.org/balssh/32/28813_2.png) [@Balssh](https://discourse.nixos.org/u/Balssh)
#### Post date: [October 26, 2024, 4:16pm UTC](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959/21 "2024-10-26T16:16:47Z")

</div>

Sorry, I meant to refer to the non-flake configuration as the “good” one as you were saying flakes are terrible.

[Next page](https://discourse.nixos.org/t/a-call-for-the-nix-team-to-present-a-unified-front-on-the-outcome-and-strategy-around-nix-flakes/54959.md?page=2)
