···224</section>
225226<section>
227+ <title>Pull Request Template</title>
228+ <para>
229+ The pull request template helps determine what steps have been made for a
230+ contribution so far, and will help guide maintainers on the status of a
231+ change. The motivation section of the PR should include any extra details
232+ the title does not address and link any existing issues related to the pull
233+ request.
234+ </para>
235+ <para>When a PR is created, it will be pre-populated with some checkboxes detailed below:
236+ </para>
237+ <section>
238+ <title>Tested using sandboxing</title>
239+ <para>
240+ When sandbox builds are enabled, Nix will setup an isolated environment
241+ for each build process. It is used to remove further hidden dependencies
242+ set by the build environment to improve reproducibility. This includes
243+ access to the network during the build outside of
244+ <function>fetch*</function> functions and files outside the Nix store.
245+ Depending on the operating system access to other resources are blocked
246+ as well (ex. inter process communication is isolated on Linux); see <link
247+ xlink:href="https://nixos.org/nix/manual/#description-45">build-use-sandbox</link>
248+ in Nix manual for details.
249+ </para>
250+ <para>
251+ Sandboxing is not enabled by default in Nix due to a small performance
252+ hit on each build. In pull requests for <link
253+ xlink:href="https://github.com/NixOS/nixpkgs/">nixpkgs</link> people
254+ are asked to test builds with sandboxing enabled (see <literal>Tested
255+ using sandboxing</literal> in the pull request template) because
256+ in<link
257+ xlink:href="https://nixos.org/hydra/">https://nixos.org/hydra/</link>
258+ sandboxing is also used.
259+ </para>
260+ <para>
261+ Depending if you use NixOS or other platforms you can use one of the
262+ following methods to enable sandboxing <emphasis role="bold">before</emphasis> building the package:
263+ <itemizedlist>
264+ <listitem>
265+ <para>
266+ <emphasis role="bold">Globally enable sandboxing on NixOS</emphasis>:
267+ add the following to
268+ <filename>configuration.nix</filename>
269+ <screen>nix.useSandbox = true;</screen>
270+ </para>
271+ </listitem>
272+ <listitem>
273+ <para>
274+ <emphasis role="bold">Globally enable sandboxing on non-NixOS platforms</emphasis>:
275+ add the following to: <filename>/etc/nix/nix.conf</filename>
276+ <screen>build-use-sandbox = true</screen>
277+ </para>
278+ </listitem>
279+ </itemizedlist>
280+ </para>
281+282+ </section>
283+ <section>
284+ <title>Built on platform(s)</title>
285+ <para>
286+ Many Nix packages are designed to run on multiple
287+ platforms. As such, it's important to let the maintainer know which
288+ platforms your changes have been tested on. It's not always practical to
289+ test a change on all platforms, and is not required for a pull request to
290+ be merged. Only check the systems you tested the build on in this
291+ section.
292+ </para>
293+ </section>
294+ <section>
295+ <title>Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)</title>
296+ <para>
297+ Packages with automated tests are much more likely to be merged in a
298+ timely fashion because it doesn't require as much manual testing by the
299+ maintainer to verify the functionality of the package. If there are
300+ existing tests for the package, they should be run to verify your changes
301+ do not break the tests. Tests only apply to packages with NixOS modules
302+ defined and can only be run on Linux. For more details on writing and
303+ running tests, see the <link
304+ xlink:href="https://nixos.org/nixos/manual/index.html#sec-nixos-tests">section
305+ in the NixOS manual</link>.
306+ </para>
307+ </section>
308+ <section>
309+ <title>Tested compilation of all pkgs that depend on this change using <command>nox-review</command></title>
310+ <para>
311+ If you are updating a package's version, you can use nox to make sure all
312+ packages that depend on the updated package still compile correctly. This
313+ can be done using the nox utility. The <command>nox-review</command>
314+ utility can look for and build all dependencies either based on
315+ uncommited changes with the <literal>wip</literal> option or specifying a
316+ github pull request number.
317+ </para>
318+ <para>
319+ review uncommitted changes:
320+ <screen>nix-shell -p nox --run nox-review wip</screen>
321+ </para>
322+ <para>
323+ review changes from pull request number 12345:
324+ <screen>nix-shell -p nox --run nox-review pr 12345</screen>
325+ </para>
326+ </section>
327+ <section>
328+ <title>Tested execution of all binary files (usually in <filename>./result/bin/</filename>)</title>
329+ <para>
330+ It's important to test any executables generated by a build when you
331+ change or create a package in nixpkgs. This can be done by looking in
332+ <filename>./result/bin</filename> and running any files in there, or at a
333+ minimum, the main executable for the package. For example, if you make a change
334+ to <package>texlive</package>, you probably would only check the binaries
335+ associated with the change you made rather than testing all of them.
336+ </para>
337+ </section>
338+ <section>
339+ <title>Meets nixpkgs contribution standards</title>
340+ <para>
341+ The last checkbox is fits <link
342+ xlink:href="https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md">CONTRIBUTING.md</link>.
343+ The contributing document has detailed information on standards the Nix
344+ community has for commit messages, reviews, licensing of contributions
345+ you make to the project, etc... Everyone should read and understand the
346+ standards the community has for contributing before submitting a pull
347+ request.
348+ </para>
349+350+ </section>
351+</section>
352+353+<section>
354<title>Hotfixing pull requests</title>
355356<itemizedlist>