Skip to content
/ dendrix Public

Commit b5e4c9a

Browse files
committed
ecosystem
1 parent e6c8c31 commit b5e4c9a

File tree

3 files changed

+84
-28
lines changed

3 files changed

+84
-28
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Dendritic Ecosystem
2+
3+
The following is a partial list of resources, such as guides, libraries, fameworks that can help you take your Dendritic-fu to the next level.
4+
5+
They are not listed in any order of preference, instead we try to group then by how they relate to each other.
6+
7+
You can also try [searching github][https://github.com/search?q=%28dendritic+language%3ANix%29+OR+%28dendritic+flake+language%3AMarkdown%29&type=code] to discover awesome dendritic implementations. Be sure to send a PR if you have anything valuable for the community.
8+
9+
## Talking to people in the community
10+
11+
- [mightyiam/dendritic](https://github.com/mightyiam/dendritic) repository has some ongoing [discussions](https://github.com/mightyiam/dendritic/discussions).
12+
13+
- [#dendritic matrix room](https://matrix.to/#/#dendritic:matrix.org)
14+
15+
You can also track the `#dendritic`/`#nix` hashtags on some social networks.
16+
17+
Even when the Dendritic pattern has no library impositions, or perhaps because of that
18+
people have created libraries/frameworks to help then along their Dendritic journey.
19+
20+
Some other utilities/libraries surely exist inside personal dendritic repositories.
21+
We also list some personal repos that you might find interesting, and perhaps they can
22+
be of inspiration for new libraries that benefit the community as well.
23+
24+
## Personal Repositories - Dendritic Implementations.
25+
26+
## Libraries
27+
28+
#### quasigod's Unify framework.
29+
30+
[quasigod/unify](https://codeberg.org/quasigod/unify/) was perhaps the first framework explicitly accomodating to the dendritic pattern. quasigod came up with the great idea of using `<aspect>.<class>` syntax. And Dendritic modules in Unify tend to look terse and very clean.
31+
32+
[gh code search](https://github.com/search?q=quasigod%2Funify+language%3ANix+&type=code) for examples using it.
33+
34+
#### vic's Dendritic libraries
35+
36+
vic tried for a long time not to use any libs besides `flake.parts`, however he has authored
37+
some libraries with one mission in mind: to help people _share_ common dendritic configurations.
38+
39+
so, vic's focus is not only on creating dendritic configs but more importantly on having them be re-usable,
40+
so people can have dendritic modules that can be cherry-picked and applied in different projects or by different people, without cloning/copying them each time.
41+
42+
the following is a list of vic's projects related to this goal and what role they play in vic's Dendrix vision.
43+
44+
- [vic/import-tree](https://github.com/vic/import-tree) as a way of auto-importing nix files.
45+
46+
`import-tree` can be used to select only a subset of a nix repository. given that in Dendritic all files
47+
have the same semantic meaning (flake-parts modules), you can use import-tree API to create selections of files
48+
from a repo and import only those parts that you need.
49+
50+
- [vic/flake-file](https://github.com/vic/flake-file) as a way to have modules contribute to flake.nix.
51+
52+
this means that sub-trees imported from a community of shared Dendritic modules can contribute to your flake.
53+
just like adding a vim plugin causes it to install lsp-servers/linters via mason.
54+
if you use `flake-file` in your repo, your modules become more re-usable since they also specify their inputs.
55+
56+
- [vic/flake-aspects](https://github.com/vic/flake-aspects) as a way to configure aspect dependencies.
57+
58+
inspired by unify's `<aspect>.<class>` transposition, `flake-aspects` allows conditional/parametric and composable dependencies between any nix configuration class. the library is pretty much independent, extensible and can be mixed in existing dendritic repos incrementally.
59+
60+
- [vic/den](https://github.com/vic/den) extends `flake.aspects` and accomodates for host and users definitions.
61+
62+
this one library is a bit more opinionated, as it establishes dependencies between host and user aspects,
63+
and provides `flake.aspects.default.{host,user}` definitions for global configurations.
64+
the `default` template provides working dendritic setups that rely on all previous libraries.
65+
66+
- [vic/denful](https://github.com/vic/denful) - a dendritic modules collection.
67+
68+
a collection of _blessed_ dendritic modules with no user/host/hardware specifics, intended to be totally reusable.
69+
think of it as a vim-distribution that contains many plugins where you can choose from.
70+
you can import-tree any parts from `denful` and it must _just work_, since all flake-inputs are contained in modules.
71+
denful has flake checks trying to keep all modules stable and working at all times.
72+
73+
- [vic/dendrix](https://github.com/vic/dendrix) - community submitted and community maintained dendritic sub-trees.
74+
75+
community dendritic modules. think of this as AUR for Dendritic Nix. there are no guarantees of things working since
76+
[dendrix-trees](Dendrix-Trees.html) are just references to sub-trees of people's repositores. the idea is that we can motivate people to share their modules or include other people's modules. this is very much a community effort.
77+
78+
- [vic/dendrite](https://github.com/vic/dendrite) - dendritic nixos distribution.
79+
80+
imagine a nixos distribution where you have a CLI/UI where you can explore/fuzzy-search all nix options available on your system and just toggle them or input their value. You also have lists of dendritic import-trees you can enable from different sources, their modules will contribute new flake-inputs, thus adding new nix options you can toggle on/off. The CLI/UI acts as a kind of dendritic-nix store, enable subtrees, toggle options, have fully customized systems in a breze.

dev/book/src/Dendritic.md

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -203,38 +203,12 @@ or features should be decommissioned immediately/temporarily.
203203

204204
> _Dendritic_ is a configuration _pattern_ - a _way-of-doing_-, not a library nor a framework.
205205
206-
The Dendritic repository has no code at all and any libraries mentioned on this document are mere recommendations and pointers to things other people using the Dendritic pattern has found useful.
206+
The Dendritic repository has no code at all, any [libraries mentioned](Dendritic-Ecosystem.html) on this guide are mere recommendations and pointers to things other people using the Dendritic pattern has found useful.
207207

208208
You are free and encouraged to explore new ways of doing or wiring Dendritic setups. Be sure to share your insights with the community.
209209

210210
Because all of this, there are many possible implementations of the Dendritic pattern.
211-
212-
Some people like to use inline-style definitions:
213-
214-
```nix
215-
{ inputs, ... }:
216-
{
217-
flake.modules.<class1>.<aspect1> = { ... };
218-
flake.modules.<class2>.<aspect1> = { ... };
219-
flake.modules.<class3>.<aspect1> = { ... };
220-
}
221-
```
222-
223-
Others might prefer nested modules using libs like [unify](https://codeberg.org/quasigod/unify) or [`vic/flake-aspects`](https://github.com/vic/flake-aspects):
224-
225-
All is good as long as you expose `flake.modules.<class>.<aspect>` attribute sets.
226-
227-
```nix
228-
# using vic/flake-aspects:
229-
{ inputs, ... }:
230-
{
231-
flake.aspects.<aspect1> = {
232-
<class1> = { ... };
233-
<class2> = { ... };
234-
<class3> = { ... };
235-
};
236-
}
237-
```
211+
Some brave souls are even exploring Dendritic setups outside flakes/flake-parts.
238212

239213
### Dendritic community.
240214

dev/book/src/SUMMARY.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
[Dendritic Nix](Dendritic.md)
88

9+
[Dendritic Ecosystem](Dendritic-Ecosystem.md)
10+
911
[Dendrix `import-tree`s](Dendrix-Trees.md)
1012

1113
[Dendrix layers](Dendrix-Layers.md)

0 commit comments

Comments
 (0)