|
| 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. |
0 commit comments