Denful provides lots of flake.parts modules that you can mix in your existing Dendritic configurations.
- no need for nix wizardy. designed for beginners but your magic is of great use here.
- minimalistic and inter-operable tools. incrementally enable just what you need.
- supports all nix module classes. no special cases.
- multi host definitions with high module re-use.
- multi user support.
- secrets management.
- automatic website documentation.
- experimental: flake-agnostic. can be used with or without flakes/flake.parts.
You are free to cherry-pick any of our provided modules via flake.modules.<class>.<name>.
However, we also provide higher modules (named facets). The concept is similar to that of layers in editor-configurations like Spacemacs or plugin-bundles in other editor distributions.
This section is mostly useful for facet authors, but surely is of value for facet users. The following example just tries to show a facet structure and what it can do.
Syntax here is that of flake.aspects. resolved modules are be available at flake.modules.<class>.niri but people can also use flake.aspects.niri if desired (eg, as an aspect dependency).
# facets/niri.nix { inputs, lib, ... }: { flake.aspects.niri = { aspects, ... }: { description = '' Niri: a scrollable-tiling WM (https://github.com/YaLTeR/niri) Configured via https://github.com/sodiboo/niri-flake. ''; # the `flake` class module contributes to your flake, # for example by adding inputs or caches via `github:vic/flake-file`. flake = { flake-file.inputs.niri-flake = { url = lib.mkDefault "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-file.nixConfig = { extra-substituters = [ "https://niri.cachix.org" ]; extra-trusted-public-keys = [ "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" ]; }; # it can also import aditional flake modules. # flake-file.inputs.foo-dep.url = "..."; # imports = [ inputs.foo-dep.flakeModule ]; # or define/enhance another aspect: anarchy is our omarchy like aspect. flake.aspects.anarchy = { includes = [ aspects.niri ]; }; }; # the nixos class enhances os-level stuff for the `niri` aspect. nixos = { imports = [ inputs.niri-flake.nixosModules.niri ]; }; }; }In some dendritic module of yours:
{ inputs, ... }: { imports = [ inputs.denful.modules.flake.niri ]; flake.aspects.my-laptop = {aspects, ...}: { # features of all facets that contribute to the anarchy aspect includes = [ aspects.anarchy ]; }; }