You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ To manually test [redirects](./_redirects):
29
29
30
30
## Building the reference manuals
31
31
32
-
By default nix.dev builds without the various versions of the Nix reference manual, as that takes quite a while due to how it's currently implemented.
32
+
By default, nix.dev builds without the various versions of the Nix reference manual, as that takes quite a while due to how it's currently implemented.
- binfmt interpreters, e.g., those configured with [`boot.binfmt.emulatedSystems`](https://search.nixos.org/options?show=boot.binfmt.emulatedSystems).
71
-
- Timing behaviour of the build system—parallel Make build does not get the correct inputs in some cases.
71
+
- Timing behaviour of the build system—a parallel Make build may not get the correct inputs in some cases.
72
72
- Insertion of random values, e.g., from `/dev/random` or `/dev/urandom`.
73
73
- Differences between Nix versions. For instance, a new Nix version might introduce a new environment variable. A statement like `env > $out` is not promised by Nix to result in the same output, going into the future.
Copy file name to clipboardExpand all lines: source/concepts/flakes.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,23 +42,23 @@ Nix handles flakes differently than regular {term}`Nix files <Nix file>` in the
42
42
43
43
- No external variables, parameters, or impure language values are allowed.
44
44
45
-
It means full reproducibility of a Nix expression, and, by extension, the resulting build instructions by default, but also prohibits parameterisation of results by consumers.
45
+
It means full reproducibility of a Nix expression, and, by extension, the resulting build instructions by default, but also prohibits parametrisation of results by consumers.
46
46
47
47
(flakes-controversy)=
48
48
## Why are flakes controversial?
49
49
50
50
[Flakes](flakes-definition) were inspired by [Shea Levy's NixCon 2018 talk](https://www.youtube.com/watch?v=DHOLjsyXPtM), formally proposed in [RFC 49](https://github.com/NixOS/rfcs/pull/49), and have been in development since 2019.
51
51
Nix introduced the implementation as its first [experimental feature] in 2021.
52
52
53
-
The subject is considered controversial among Nix users and developers in terms of design, implementation quality, and decisionmaking process.
53
+
The subject is considered controversial among Nix users and developers in terms of design, implementation quality, and decision-making process.
54
54
In particular:
55
55
- The RFC was closed without conclusion, and some fundamental issues are not yet resolved.
56
56
For example:
57
57
- The notion of a [global flake registry](https://github.com/NixOS/flake-registry) saw [substantial criticism](https://github.com/NixOS/rfcs/pull/49#issuecomment-635635333) that was never addressed.
58
58
While the source references of [registry entries can be pinned](https://nix.dev/manual/nix/stable/command-ref/new-cli/nix3-registry-pin), local registry names in Nix expressions [introduce mutable system state](https://github.com/NixOS/nix/issues/7422) and are thus, in that regard, no improvement over channels as managed by [`nix-channel`](https://nix.dev/manual/nix/stable/command-ref/nix-channel).
59
-
- It is [impossible to parameterise flakes](https://github.com/NixOS/nix/issues/2861).
59
+
- It is [impossible to parametrise flakes](https://github.com/NixOS/nix/issues/2861).
60
60
This means that [flakes downgrade ease of use of the `system` parameter](https://github.com/NixOS/nix/issues/3843) of derivations, for producers and consumers.
61
-
- the flakes proposal was criticised for [trying to solve too many problems at once](https://github.com/nixos/rfcs/pull/49#issuecomment-521998933) and [at the wrong abstraction layer](https://discourse.nixos.org/t/nixpkgs-cli-working-group-member-search/30517).
61
+
- the flakes' proposal was criticised for [trying to solve too many problems at once](https://github.com/nixos/rfcs/pull/49#issuecomment-521998933) and [at the wrong abstraction layer](https://discourse.nixos.org/t/nixpkgs-cli-working-group-member-search/30517).
62
62
Part of this is that [the new command line interface and flakes are closely tied to each other](https://discourse.nixos.org/t/2023-03-06-nix-team-meeting-minutes-38/26056#cli-stabilisation-announcement-draft-4).
63
63
- As [predicted by RFC reviewers](https://github.com/NixOS/rfcs/pull/49#issuecomment-588990425), the original implementation introduced [regressions](https://discourse.nixos.org/t/nix-2-4-and-what-s-next/16257) in the [Nix 2.4 release](https://nix.dev/manual/nix/stable/release-notes/rl-2.4.html), breaking some stable functionality without a [major version](https://semver.org/) increment.
64
64
- Copying sources to the Nix store prior to evaluation adds a [significant performance penalty](https://github.com/NixOS/nix/issues/3121), especially for large repositories such as {term}`Nixpkgs`.
@@ -75,7 +75,7 @@ As of the [2023](https://discourse.nixos.org/t/nix-community-survey-2023-results
75
75
76
76
You have to judge for yourself based on your needs.
77
77
78
-
[Flakes](flakes-definition) emphasize reproducible artifacts and convenience for their consumers, while classic Nix tools center around composable building blocks and customisation options for developers.
78
+
[Flakes](flakes-definition) emphasize reproducible artifacts and convenience for their consumers, while classic Nix tools center around composable building blocks and customization options for developers.
79
79
Both paradigms have their own set of unique concepts and support tooling that have to be learned, with varying ease of use, implementation quality, and support status.
80
80
At the moment, neither the stable nor the experimental interface is clearly superior to the other in all aspects.
81
81
@@ -89,13 +89,13 @@ Flakes and the `nix` command suite bring multiple improvements that are relevant
89
89
At the same time, flakes have [fundamental architectural issues](flakes-controversy) and a number of [problems with the implementation](https://github.com/NixOS/nix/issues?q=is%3Aissue+is%3Aopen+label%3Aflakes+sort%3Areactions-%2B1-desc), and there is no coordinated effort to resolve them systematically.
90
90
There are also still many [open design questions around the `nix` command line interface](https://github.com/NixOS/nix/issues?q=is%3Aissue+is%3Aopen+label%3Anew-cli+sort%3Areactions-%2B1-desc), some of which are currently being worked on.
91
91
92
-
While flakes reduce complexity in some regards, they also introduce some with additional mechanisms.
92
+
While flakes reduce complexity in some regards, they also introduce some complexity with additional mechanisms.
93
93
You will have to learn more about the system to fully understand how it works.
94
94
95
95
Other than that, and below the surface of the flake schema, Nix and the Nix language work exactly the same in both cases.
96
96
In principle, the same level of reproducibility can be achieved with or without flakes.
97
97
In particular, the process of adding software to {term}`Nixpkgs` or maintaining {term}`NixOS` modules and configurations is not affected by flakes at all.
98
-
There is also no evidence that flakes could help solving the scalability challenges of either.
98
+
There is also no evidence that flakes could help solve the scalability challenges of either.
99
99
100
100
Finally, there are downsides to relying on [experimental features][experimental feature] in general:
Copy file name to clipboardExpand all lines: source/contributing/documentation/diataxis.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,9 +5,9 @@ We aim to build our documentation according to the [Diátaxis framework for tech
5
5
-[Tutorials](#tutorials)
6
6
-[Guides](#guides)
7
7
-[Reference](#reference)
8
-
-[Concept](#concepts)
8
+
-[Concepts](#concepts)
9
9
10
-
We've found that contributors struggle to understand the differences between these categories, and while we _strongly_ recommend reading up on the Diataxis framework, we can summarize them as follows:
10
+
We've found that contributors struggle to understand the differences between these categories, and while we _strongly_ recommend reading up on the Diátaxis framework, we can summarize them as follows:
11
11
12
12
## Reference
13
13
@@ -62,7 +62,7 @@ The pilot-in-training needs practice knowing when to deploy the landing gear, wh
62
62
Actually landing the plane during the flight simulation is less important than learning the individual skills that make up a successful landing.
63
63
This is the context for a tutorial.
64
64
65
-
Finally, one last way of thinking about the difference between How-to Guide and Tutorial is like this:
65
+
Finally, one last way of thinking about the difference between a how-to guide and a tutorial is like this:
66
66
- Guide: "step 1: do this, step 2: do that, etc"
67
67
- Tutorial: "take my hand as I show you how to do this"
Copy file name to clipboardExpand all lines: source/contributing/documentation/index.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Contributing documentation
2
2
3
-
Thank you for your interest to help improve documentation in the Nix ecosystem!
3
+
Thank you for your interest in helping improve documentation in the Nix ecosystem!
4
4
This project would not be possible without your support.
5
5
6
6
## Getting started
@@ -40,7 +40,7 @@ Please share your experience to help us improve upstream documentation and begin
40
40
If you are proficient in applying Nix to a domain-specific problem, and want to share your expertise on best practices, please check the existing content.
41
41
- Does existing material on your subject meet your standards?
42
42
- How could we improve it?
43
-
- Is there a popular application of Nix' capabilities not yet covered?
43
+
- Is there a popular application of Nix's capabilities not yet covered?
Copy file name to clipboardExpand all lines: source/contributing/documentation/writing-a-tutorial.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,20 +24,20 @@ Most of that time is typically spent collaboratively:
24
24
- Ensuring that the instructions are neither too sparse nor too dense for learners
25
25
- Finding ever-more succinct and clear ways to convey ideas
26
26
27
-
Follow these steps to avoid re-doing work
27
+
Follow these steps to avoid redoing work
28
28
29
29
### Pick a topic
30
30
31
31
There is a [tracking issue](https://github.com/NixOS/nix.dev/issues/572) for tutorials that the documentation team has decided should exist as part of the tutorial series.
32
32
Pick an issue that covers a topic that you're either knowledgeable about or have a particular interest in.
33
33
34
-
Check referenced issues and pull request to make sure you won't duplicate work that someone else has already started!
34
+
Check referenced issues and pull requests to make sure you won't duplicate work that someone else has already started!
35
35
36
36
There are more [tutorial requests](https://github.com/NixOS/nix.dev/issues?q=is%3Aopen+is%3Aissue+label%3Atutorial) than captured in the outline.
37
37
[Open a new issue](https://github.com/NixOS/nix.dev/issues/new?&template=tutorial.md) if what you wanted to work on isn't tracked anywhere.
38
38
This is an opportunity for you to clarify your goals, and an opportunity for everyone else to find out that there's interest in that subject.
39
39
40
-
### Submit an pull request with an outline
40
+
### Submit a pull request with an outline
41
41
42
42
Submit a pull request with an outline of the tutorial following [our recommended structure](#structure).
43
43
The outline should contain bullet points on each section's content.
@@ -57,7 +57,7 @@ Revise your tutorial based on the detailed feedback.
57
57
We recommend testing your tutorial with friends or coworkers.
58
58
This will both help with revealing implicit prerequisites as well as provide a realistic estimate of the reading time.
59
59
60
-
In a final review will check that everything is technically correct.
60
+
A final review will check that everything is technically correct.
61
61
62
62
## Structure
63
63
@@ -74,7 +74,7 @@ The learning goal of a tutorial is always acquiring a skill, which is distinguis
74
74
### What do you need?
75
75
76
76
State the prerequisite knowledge and skills.
77
-
The tutorial should always be written such that the stated prerequisites are sufficient to achieve learning goals.
77
+
The tutorial should always be written such that the stated prerequisites are sufficient to achieve the learning goals.
78
78
79
79
Examples:
80
80
@@ -111,7 +111,7 @@ Depending on how well a use case is explored, point the reader to
111
111
- guides or other tutorials
112
112
- links to known-good external resources, with summaries
113
113
- overview of available support tools, and their state of maturity and maintenance
114
-
- overview of ideas, and state of community discussion.
114
+
- overview of ideas, and the state of community discussion.
115
115
116
116
We recommend making an explicit separation of practical from theoretical learning resources, as then readers will be able to quickly decide to either get things done or learn more.
0 commit comments