docs: format via deno fmt

This should be a pre-commit hook in the future.
This commit is contained in:
raf 2024-11-25 19:16:46 +03:00
commit a196e9610f
Signed by: NotAShelf
GPG key ID: AF26552424E53993
11 changed files with 114 additions and 117 deletions

View file

@ -1,25 +1,23 @@
# Using DAGs {#ch-using-dags}
We conform to the NixOS options types for the most part, however, a noteworthy
addition for certain options is the [**DAG
(Directed acyclic graph)**](https://en.wikipedia.org/wiki/Directed_acyclic_graph)
addition for certain options is the
[**DAG (Directed acyclic graph)**](https://en.wikipedia.org/wiki/Directed_acyclic_graph)
type which is borrowed from home-manager's extended library. This type is most
used for topologically sorting strings. The DAG type allows the attribute set
entries to express dependency relations among themselves. This can, for
example, be used to control the order of configuration sections in your
`luaConfigRC`.
entries to express dependency relations among themselves. This can, for example,
be used to control the order of configuration sections in your `luaConfigRC`.
The below section, mostly taken from the [home-manager
manual](https://raw.githubusercontent.com/nix-community/home-manager/master/docs/manual/writing-modules/types.md)
The below section, mostly taken from the
[home-manager manual](https://raw.githubusercontent.com/nix-community/home-manager/master/docs/manual/writing-modules/types.md)
explains in more detail the overall usage logic of the DAG type.
## entryAnywhere {#sec-types-dag-entryAnywhere}
> `lib.dag.entryAnywhere (value: T) : DagEntry<T>`
Indicates that `value` can be placed anywhere within the DAG.
This is also the default for plain attribute set entries, that
is
Indicates that `value` can be placed anywhere within the DAG. This is also the
default for plain attribute set entries, that is
```nix
foo.bar = {
@ -41,8 +39,8 @@ are equivalent.
> `lib.dag.entryAfter (afters: list string) (value: T) : DagEntry<T>`
Indicates that `value` must be placed _after_ each of the
attribute names in the given list. For example
Indicates that `value` must be placed _after_ each of the attribute names in the
given list. For example
```nix
foo.bar = {
@ -57,8 +55,8 @@ would place `b` after `a` in the graph.
> `lib.dag.entryBefore (befores: list string) (value: T) : DagEntry<T>`
Indicates that `value` must be placed _before_ each of the
attribute names in the given list. For example
Indicates that `value` must be placed _before_ each of the attribute names in
the given list. For example
```nix
foo.bar = {
@ -73,9 +71,8 @@ would place `b` before `a` in the graph.
> `lib.dag.entryBetween (befores: list string) (afters: list string) (value: T) : DagEntry<T>`
Indicates that `value` must be placed _before_ the attribute
names in the first list and _after_ the attribute names in the
second list. For example
Indicates that `value` must be placed _before_ the attribute names in the first
list and _after_ the attribute names in the second list. For example
```nix
foo.bar = {
@ -87,18 +84,18 @@ foo.bar = {
would place `c` before `b` and after `a` in the graph.
There are also a set of functions that generate a DAG from a list.
These are convenient when you just want to have a linear list of DAG
entries, without having to manually enter the relationship between
each entry. Each of these functions take a `tag` as argument and the
DAG entries will be named `${tag}-${index}`.
There are also a set of functions that generate a DAG from a list. These are
convenient when you just want to have a linear list of DAG entries, without
having to manually enter the relationship between each entry. Each of these
functions take a `tag` as argument and the DAG entries will be named
`${tag}-${index}`.
## entriesAnywhere {#sec-types-dag-entriesAnywhere}
> `lib.dag.entriesAnywhere (tag: string) (values: [T]) : Dag<T>`
Creates a DAG with the given values with each entry labeled
using the given tag. For example
Creates a DAG with the given values with each entry labeled using the given tag.
For example
```nix
foo.bar = lib.dag.entriesAnywhere "a" [ 0 1 ];
@ -117,9 +114,9 @@ foo.bar = {
> `lib.dag.entriesAfter (tag: string) (afters: list string) (values: [T]) : Dag<T>`
Creates a DAG with the given values with each entry labeled
using the given tag. The list of values are placed are placed
_after_ each of the attribute names in `afters`. For example
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed are placed _after_ each of the attribute names in
`afters`. For example
```nix
foo.bar =
@ -140,13 +137,13 @@ foo.bar = {
> `lib.dag.entriesBefore (tag: string) (befores: list string) (values: [T]) : Dag<T>`
Creates a DAG with the given values with each entry labeled
using the given tag. The list of values are placed _before_ each
of the attribute names in `befores`. For example
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed _before_ each of the attribute names in `befores`.
For example
```nix
foo.bar =
{ b = 0; } // lib.dag.entriesBefore "a" [ "b" ] [ 1 2 ];
foo.bar =
{ b = 0; } // lib.dag.entriesBefore "a" [ "b" ] [ 1 2 ];
```
is equivalent to
@ -163,10 +160,9 @@ foo.bar = {
> `lib.dag.entriesBetween (tag: string) (befores: list string) (afters: list string) (values: [T]) : Dag<T>`
Creates a DAG with the given values with each entry labeled
using the given tag. The list of values are placed _before_ each
of the attribute names in `befores` and _after_ each of the
attribute names in `afters`. For example
Creates a DAG with the given values with each entry labeled using the given tag.
The list of values are placed _before_ each of the attribute names in `befores`
and _after_ each of the attribute names in `afters`. For example
```nix
foo.bar =