Summary

Curated reading list assembled while investigating the academic lineage of the Nix module system, the dendritic pattern, and aspect-oriented framings used by vic/den. Surfaces three threads: (1) Eelco Dolstra’s foundational Nix papers, (2) the AOP / Multi-Dimensional Separation of Concerns lineage that the dendritic community draws vocabulary from, and (3) the Software Product Lines / Feature-Oriented Programming literature that arguably fits dendritic better than AOP does. Feeds Dotfiles Host Profiles via Private Flake.

Nix Foundations (Dolstra et al.)

The actual academic root of every Nix configuration. Predates the dendritic discussion by 15+ years and underlies it.

AOP and MDSoC Origins

Where the “aspect-oriented” and “cross-cutting concerns” terminology that vic/den uses actually comes from. The community appropriates this vocabulary loosely; the analogy holds at the join-point level but breaks at the decomposition level (in classical AOP aspects overlay a primary class hierarchy; in dendritic they are the primary decomposition).

  • Kiczales, Lamping, Mendhekar, Maeda et al. (1997). Aspect-Oriented Programming. ECOOP, LNCS vol. 1241. The seminal paper. Introduces aspects, pointcuts, advice, the weaver. Origin of “cross-cutting concerns.”
  • Tarr, Ossher, Harrison, Sutton (1999). N Degrees of Separation: Multi-Dimensional Separation of Concerns. ICSE. ICSE Most Influential Paper award. The closest academic frame for what dendritic actually does — coins “tyranny of the dominant decomposition,” argues for separating concerns along multiple axes simultaneously. Read this if you want one paper that names dendritic’s underlying problem.
  • Dijkstra (1974). “On the Role of Scientific Thought.” Springer. Coined “separation of concerns.” Foundational ancestor.
  • Parnas (1972). “On the Criteria To Be Used in Decomposing Systems into Modules.” CACM. Information hiding. The other foundational ancestor — what Nix module options effectively realize.

Software Product Lines / Feature-Oriented Programming

Empirically the best-fit theoretical frame for what the Nix module system enables. SPL/FOP has spent 20+ years on exactly the problem of deriving variant configurations from a shared base via composition of optional features with variability points.

Modern AOP Applications

Useful for “AOP in declarative or non-OOP contexts” — precedents for what dendritic is doing in spirit.

Recent Synthesis

  • Zwinger (April 2026). Nix: A Solution With Problems. arXiv preprint. Brand-new (published two weeks before this note). Thesis-style literature review categorizing Nix research into build systems, package managers, configuration management, and development environments. Surveys open problems (trust, granular incremental builds). Most current academic synthesis of the Nix research landscape.

Connections

  • Dotfiles Host Profiles via Private Flake — the project this reading list informs. The private-flake approach there is one answer to the multi-host variability problem; the SPL/FOP literature catalogs others.
  • Nix and LLMs Form a Virtuous Cycle — adjacent Nix-related atomic note.
  • Promotion candidates (none of these atomic notes exist yet, worth writing if the topic comes up again):
    • Tyranny of the Dominant Decomposition — Tarr et al.’s framing, applies broadly beyond Nix.
    • Nix Module System Realizes Multi-Dimensional Separation of Concerns — the synthesis claim that no Nix author has written down formally.
    • Dendritic Pattern Borrows AOP Vocabulary But Realizes SPL Composition — captures the analogy/mismatch.

My Reactions

Two things stand out from this exercise:

  1. The Nix community has a real academic foundation but doesn’t lean on it. Dolstra’s 2004–2010 papers establish a paradigm with clear claims and citations, yet practical config patterns (dendritic, feature flags, host axes) get reinvented in Discourse threads without referencing the literature. There is room for someone to write the bridging paper.

  2. The dendritic discussion’s choice of vocabulary is rhetorical, not technical. “Aspect-oriented” carries the right vibe (cross-cutting, weaving, modular) but the structural fit is with feature-oriented programming and multi-dimensional separation of concerns. If I ever need to defend a Nix architecture choice in writing, citing Dolstra (2007) for the paradigm and Tarr et al. (1999) for the multi-axis decomposition is more defensible than citing AOP.