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.
- Dolstra, de Jonge, Visser (2004). Nix: A Safe and Policy-Free System for Software Deployment. LISA. 115 citations. Introduces the cryptographic-hash-keyed store; the load-bearing primitive under everything Nix does.
- Dolstra, Visser, de Jonge (2004). Imposing a Memory Management Discipline on Software Deployment. ICSE. 53 citations. Frames deployment as memory management — components are immutable allocations, garbage-collected when unreferenced.
- Dolstra (2006). The Purely Functional Software Deployment Model. PhD thesis, Utrecht. 146 citations. Full theoretical foundation; the canonical citation when justifying Nix.
- Dolstra & Hemel (2007). Purely Functional System Configuration Management. HotOS XI. 12 citations. Most directly relevant to the dotfiles question — formalizes “configuration as a function of inputs” as a paradigm distinct from imperative configuration management (Puppet, Chef, etc).
- Dolstra, Löh, Pierron. NixOS: A Purely Functional Linux Distribution. JFP. 134 citations. The article that explicitly describes the NixOS module system as “modular, purely functional specification.” This is what Home Manager inherits.
- Courtès (2013). Functional Package Management with Guix. European Lisp Symposium. 53 citations. Scheme-based parallel project; useful for contrast — same paradigm, different host language.
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.
- Ferreira, Gaia, Figueiredo, Maia (2014). On the use of feature-oriented programming for evolving software product lines. Science of Computer Programming. 31 citations. Empirical comparison; finds FOP “requires few changes in source code… providing better support than other techniques for non-intrusive insertions” — almost exactly the property
mkDefault/mkForcegive Nix. - Gaia, Ferreira, Figueiredo, Maia (2014). A quantitative and qualitative assessment of aspectual feature modules for evolving software product lines. Science of Computer Programming. 16 citations. Hybrid model: features as primary decomposition, aspects for true cross-cutting concerns within them. Structurally what dendritic + per-host overrides amounts to.
- Horcas, Cortiñas, Fuentes, Luaces (2018). Integrating the Common Variability Language with Multilanguage Annotations for Web Engineering. SPLC. 11 citations. Discusses combining composition-based and annotation-based variability — the same tension Nix has between
imports(composition) andmkIfpredicates (annotation).
Modern AOP Applications
Useful for “AOP in declarative or non-OOP contexts” — precedents for what dendritic is doing in spirit.
- Paschke & Schaefermeier (2015). Aspect OntoMaven — Aspect-Oriented Ontology Development and Configuration With OntoMaven. Applies AOP concepts to declarative ontology configuration via Maven-style modules. The closest extant academic analogue to applying AOP to declarative system configuration.
- Ishimura & Yoshimoto (2024). Aspect-oriented Programming with Julia. Recent example of grafting AOP onto a host language via metaprogramming. Demonstrates the AOP idea persisting without new theoretical foundations.
- Savinov (2014). Concept-Oriented Programming: References, Classes and Inheritance Revisited. Theoretical sibling — explicitly tries to unify OOP, AOP, prototype-based, and functional patterns under one model. Resonates with dendritic’s “every file is a module” stance.
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:
-
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.
-
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.