Skip to content
vic

vic/denful

re-usable, cherry-pickable Dendritic modules that use flake.parts to customize and extend your config easily. like a lazyvim-distribution but for dendritic nix.

vic/denful.json
{
"defaultBranch": "main",
"description": "re-usable, cherry-pickable Dendritic modules that use flake.parts to customize and extend your config easily. like a lazyvim-distribution but for dendritic nix.",
"fullName": "vic/denful",
"homepage": "https://vic.github.io/dendrix/Dendritic.html",
"language": "Nix",
"name": "denful",
"pushedAt": "2025-11-21T22:45:37Z",
"stargazersCount": 8,
"updatedAt": "2025-11-21T22:45:41Z",
"url": "https://github.com/vic/denful"
}

denful - Dendritic Nix modules, enough to fill a den.

Section titled “denful - Dendritic Nix modules, enough to fill a den.”

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 ];
};
}