# Life of a pull request against NixOS/nixpkgs

**URL:** https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691
**Category:** Documentation
**Created:** [September 14, 2022, 9:07pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691 "2022-09-14T21:07:28Z")
**Posts on this page:** 16
**Page:** 1

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 14, 2022, 9:07pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/1 "2022-09-14T21:07:28Z")

</div>

Hi,

I’m trying to have a global overview of what is happening when a contributor submits a PR against NixOS/nixpkgs.

I made a UML workflow available [here](https://planttext.com/?text=VPBBRjmm34Nt-We2tTYBGVOU84qQ54s1DYqwBRAcBDfcnfPSYPf907zygNcaI1_nmh14NlBS2rybmIXv6k6E7qE25NpYZY1qW33dSOH8FpCbCKPOHYfTNpQlT2rlB75FomUM8Tj5pzTUM8lt0mijDy5BP9ibnDTgq8PfOX4wTErBEKrXIyljaukuw9eNWmuUJBF9LaMAzFKRO8_iay24IQU0ZUZROMrCf9bGZCLskyVeeBbsxhIjIlNQF8CttoFtlKflFbwULA0W6a7rBlFeW1FqaSY_hSjdvKCDFWXKJvJgFm6RUrImJetXFCUmmp4f2tTGAQggZxVaQf21F5HteJQWJv8m6_AEExEw19syDl-BgVbCiQTYNS9Vhi-vDPkILEcm1m-Uzl0GB7X-dBTzkf2O_VOYQt1eHr9XS_JgAF8EXODNWeBzNYtamyM_SYWcp6_sCkV7F0PqfxNAm1ssaWf9Y-r0a2ZkA9REeuyN3e3z6N5rXdisfolCbRxq7pQ_0000), do you think you could make a review and let me know what’s missing, what’s wrong?

I think such UML workflows is a very good way to explain to newcomers what is going on when they want to submit a new pull request and when they can expect their PR to be available in NixOS.

Let me know what you think,

Thanks!

---

<div class="post-metadata">

### Author: ![Solene](https://discourse.nixos.org/user_avatar/discourse.nixos.org/solene/32/5738_2.png) [@Solene](https://discourse.nixos.org/u/Solene)
#### Post date: [September 14, 2022, 9:10pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/2 "2022-09-14T21:10:47Z")

</div>

Hi

cool idea! I planned to make something like this, but you made it better than what I had in mind 😃

I think the column “Contributor commiter” may have a few more items when looking at [https://github.com/NixOS/nixpkgs/tree/master/doc/contributing](https://github.com/NixOS/nixpkgs/tree/master/doc/contributing) , there are other branches than master 🙂

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 14, 2022, 9:17pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/3 "2022-09-14T21:17:16Z")

</div>

Hi Solene,

Yes, there are multiple branches, I’m just doing the life of a PR against `master` branch for the moment, I’ll see later if we should add other branches.

I created a hackmd page where we can easily edit the workflow: [https://hackmd.io/8hDd\_0aITK6nnGXAQOL3\_w](https://hackmd.io/8hDd_0aITK6nnGXAQOL3_w) feel free to edit it 🙂

Thanks!

---

<div class="post-metadata">

### Author: ![Thra11](https://discourse.nixos.org/user_avatar/discourse.nixos.org/thra11/32/2384_2.png) [@Thra11](https://discourse.nixos.org/u/Thra11)
#### Post date: [September 14, 2022, 9:22pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/4 "2022-09-14T21:22:11Z")

</div>

> [@drupol](#):
>
> I made a UML workflow available [here](https://planttext.com/?text=VPBBRjmm34Nt-We2tTYBGVOU84qQ54s1DYqwBRAcBDfcnfPSYPf907zygNcaI1_nmh14NlBS2rybmIXv6k6E7qE25NpYZY1qW33dSOH8FpCbCKPOHYfTNpQlT2rlB75FomUM8Tj5pzTUM8lt0mijDy5BP9ibnDTgq8PfOX4wTErBEKrXIyljaukuw9eNWmuUJBF9LaMAzFKRO8_iay24IQU0ZUZROMrCf9bGZCLskyVeeBbsxhIjIlNQF8CttoFtlKflFbwULA0W6a7rBlFeW1FqaSY_hSjdvKCDFWXKJvJgFm6RUrImJetXFCUmmp4f2tTGAQggZxVaQf21F5HteJQWJv8m6_AEExEw19syDl-BgVbCiQTYNS9Vhi-vDPkILEcm1m-Uzl0GB7X-dBTzkf2O_VOYQt1eHr9XS_JgAF8EXODNWeBzNYtamyM_SYWcp6_sCkV7F0PqfxNAm1ssaWf9Y-r0a2ZkA9REeuyN3e3z6N5rXdisfolCbRxq7pQ_0000), do you think you could make a review and let me know what’s missing, what’s wrong?

There should probably be a loop of “reviewers review PR, reviewers request changes, author makes changes, reviewers review PR” before the PR is (potentially) approved.

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 14, 2022, 9:23pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/5 "2022-09-14T21:23:36Z")

</div>

> [@Thra11](#):
>
> There should probably be a loop of “reviewers review PR, reviewers request changes, author makes changes, reviewers review PR” before the PR is (potentially) approved.

Definitely, I might add it tomorrow, but feel free to edit in here: [https://hackmd.io/8hDd\_0aITK6nnGXAQOL3\_w](https://hackmd.io/8hDd_0aITK6nnGXAQOL3_w)

Thanks!

---

<div class="post-metadata">

### Author: ![fricklerhandwerk](https://discourse.nixos.org/user_avatar/discourse.nixos.org/fricklerhandwerk/32/2029_2.png) [@fricklerhandwerk](https://discourse.nixos.org/u/fricklerhandwerk)
#### Post date: [September 14, 2022, 9:33pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/6 "2022-09-14T21:33:45Z")

</div>

This is just awesome and I consider such things (graphics, contributor guidance) a priority for documentation.

Unless there are strong reasons against this, it should immediately become a PR so we have more contributor eyes on it and a structured review process.

Right now we don’t seem to have mermaid rendering for Nixpkgs/NixOS manual, but we can still discuss this based on GitHub previews and decide later how to present the result. (Worst case just check in a static SVG and leave the source in a separate file, together with notes how to manually update.)

PS: I get 403 Forbidden on the document.

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 14, 2022, 9:35pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/7 "2022-09-14T21:35:20Z")

</div>

Thanks !

I can submit this in a PR tomorrow.

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 14, 2022, 9:41pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/8 "2022-09-14T21:41:17Z")

</div>

I just updated the hackmd page permissions, it should be ok now.

---

<div class="post-metadata">

### Author: ![NobbZ](https://discourse.nixos.org/user_avatar/discourse.nixos.org/nobbz/32/7022_2.png) [@NobbZ](https://discourse.nixos.org/u/NobbZ)
#### Post date: [September 14, 2022, 10:16pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/9 "2022-09-14T22:16:17Z")

</div>

> [@Thra11](#):
>
> There should probably be a loop of “reviewers review PR, reviewers request changes, author makes changes, reviewers review PR” before the PR is (potentially) approved.

And this should also include “rebasing and squashing”, as “adding commits” is usually not what happens.

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 15, 2022, 7:49am UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/10 "2022-09-15T07:49:04Z")

</div>

I created a temporary repository so we can all contribute: [GitHub - drupol/nixos-processes](https://github.com/drupol/nixos-processes)

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 17, 2022, 3:44pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/11 "2022-09-17T15:44:44Z")

</div>

Dear all,

I added [another diagram](http://www.plantuml.com/plantuml/uml/rPDFYzim4CNl_XGFUaa2MTXhSbZQ5DfJikosz2nBOrkrh17wmsuW7xwohInk0mkbfvuybfvcVcyqYZeQmb6_dfwnnQ4Jrf91Saf42bNejNN2Ym6ra7thELbrOCCU7zGzoUQ-gYubkdmzAoykLHMYyB426lPz_W3ZCOT7yfgLbiAOyxIi6wm-sZD-SesGfAGGccGUrj01gpE5DM97Tf82kszUjorvEC-ILFA4o0KJSgOE-qcS0yBAydh-iqetrsX6AMmGhT3sFK9FZaGi15T_XUSn6JCLRYcWyJpWYuvTglUBatZfT6xkwZ39e2YIZAIAnKm8ot7sUaEuw5-kTgINgK-RZTMlhc_3Blfa-yrcNnGBSPP_Ijeek7nb8kCjDGlJe_2xComKwacVhqqtGiOmjbOAsT5ThiRXZdrxpJ4YljNwC-7lc5mWjvA7MbjIVqVxjd4SKs5WbSnxNlxLJ4xmb2porCTIvQR6ZRzayx3NXhPXo4Fpl_aRjmVoBLNL_CHEdqyx_EZou7R2ERBeoDF3A5v8S_WB) which is almost done.

Do you have ideas of other diagrams to add in this repo?

---

<div class="post-metadata">

### Author: ![fricklerhandwerk](https://discourse.nixos.org/user_avatar/discourse.nixos.org/fricklerhandwerk/32/2029_2.png) [@fricklerhandwerk](https://discourse.nixos.org/u/fricklerhandwerk)
#### Post date: [September 19, 2022, 9:38am UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/12 "2022-09-19T09:38:59Z")

</div>

@drupol absolutely great job on the diagrams. They are incredibly helpful. I’ve been thinking these days how we could get them to the manuals as soon as possible.

Since you’re essentially introducing a new workflow to developing Nixpkgs/NixOS, part of a PR to add the first diagram should be documentation how to maintain it. So far, we’re utterly bad at this in the Nix ecosystem, and this would be an opportunity to improve and set a good example.

I also have a few things I would like to discuss about presentation, and found myself incapable of suggesting changes directly, because I’m absolutely not used to plantUML.

Another ridiculous problem is that having a separate GitHub project prevents me to add comments or suggestions to existing code without jumping through the PR hoops.

More overviews and illustrations are key to improving user and contributor onboarding. I wrote you a DM to schedule a chat.

---

<div class="post-metadata">

### Author: ![uri-canva](https://discourse.nixos.org/user_avatar/discourse.nixos.org/uri-canva/32/3200_2.png) [@uri-canva](https://discourse.nixos.org/u/uri-canva)
#### Post date: [September 20, 2022, 6:23am UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/13 "2022-09-20T06:23:55Z")

</div>

GitHub supports mermaid diagrams embedded in markdown out of the box, so we could use that to simplify the workflow of editing / viewing them: [Include diagrams in your Markdown files with Mermaid - The GitHub Blog](https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/), especially if we include them in [https://github.com/NixOS/nixpkgs/blob/24ac72e8a18942e827154c334d0bc41c22bdc536/CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/24ac72e8a18942e827154c334d0bc41c22bdc536/CONTRIBUTING.md).

Not sure whether our documentation markdown renderer supports that though.

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [September 20, 2022, 6:50am UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/14 "2022-09-20T06:50:14Z")

</div>

Sadly, support for Mindmaps and activity diagrams are not existing yet in Mermaid.

---

<div class="post-metadata">

### Author: ![hugosenari](https://discourse.nixos.org/user_avatar/discourse.nixos.org/hugosenari/32/5630_2.png) [@hugosenari](https://discourse.nixos.org/u/hugosenari)
#### Post date: [October 1, 2025, 5:42pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/15 "2025-10-01T17:42:49Z")

</div>

> [@drupol](#):
>
> Do you have ideas of other diagrams to add in this repo?

Substituters

> <https://github.com/NixOS/nix/pull/13301>
>
> \## Motivation
> 
> 
> 
> Nix currently hard fails if a substituter is inaccessible, …even when they are other substituters available, unless \`fallback = true\`. 
> This breaks nix build, run, shell et al entirely. 
> This would modify the default behaviour so that nix would actually use the other available substituters and not hard error.
> 
> Here is an example before vs after when using dotenv where I have manually stopped my own cache to trigger this issue, before and after the patch. The initial error is really frustrating because there is other caches available.
> !\[image\](https://github.com/user-attachments/assets/b4aec474-52d1-497d-b4e8-6f5737d6acc7)
> !\[image\](https://github.com/user-attachments/assets/ee91fcd4-4a1a-4c33-bf88-3aee67ad3cc9)
> 
> 
> \## Context
> 
> 
> https://github.com/NixOS/nix/issues/3514#issuecomment-2905056198 is the earliest issue I could find, but there are many duplicates.
> 
> There is an initial PR at https://github.com/NixOS/nix/pull/7188, but this appears to have been abandoned - over 2 years with no activity, then a no comment review in jan. There was a subsequent PR at https://github.com/NixOS/nix/pull/8983 but this was closed without merge - over a year without activity.
> 
> I have visualised the current and proposed flows. I believe my logic flows line up with what is suggested in https://github.com/NixOS/nix/pull/7188#issuecomment-1375652870 but correct me if I am wrong.
> Current behaviour:
> !\[current\](https://github.com/user-attachments/assets/d9501b34-274c-4eb3-88c3-9021a482e364)
> Proposed behaviour:
> !\[proposed\](https://github.com/user-attachments/assets/8236e4f4-21ef-45d7-87e1-6c8d416e8c1c)
> 
> \[Charts in lucid\](https://lucid.app/lucidchart/1b51b08d-6c4f-40e0-bf54-480df322cccf/view)
> 
> 
> Possible issues to think about:
> \- I could not figure out where the curl error is created... I can't figure out how to swallow it and turn it into a warn or better yet, a debug log.
> \- Unfortunately, in contrast with the previous point, I'm not sure how verbose we want to warns/traces to be - personally I think that the warn that a substituter has been disabled (when it happens) is sufficient, and that the next one is being used, but this is personal preference.
> 
> 
> 
> \---
> 
> Add :+1: to \[pull requests you find important\](https://github.com/NixOS/nix/pulls?q=is%3Aopen+sort%3Areactions-%2B1-desc).
> 
> The Nix maintainer team uses a \[GitHub project board\](https://github.com/orgs/NixOS/projects/19) to \[schedule and track reviews\](https://github.com/NixOS/nix/tree/master/maintainers#project-board-protocol).

by @philipwilk

 ![image](https://discourse.nixos.org/uploads/default/original/3X/5/8/58bac35626db5a31853c5ffbc485f09ca388b57a.png)

---

<div class="post-metadata">

### Author: ![drupol](https://discourse.nixos.org/user_avatar/discourse.nixos.org/drupol/32/9471_2.png) [@drupol](https://discourse.nixos.org/u/drupol)
#### Post date: [October 1, 2025, 5:54pm UTC](https://discourse.nixos.org/t/life-of-a-pull-request-against-nixos-nixpkgs/21691/16 "2025-10-01T17:54:21Z")

</div>

Hello,

Feel free to post a PR and I’ll add it immediately !
