In the last few days I spent some time with @balsoft and then @Raitobezarius to map out architectural components or areas of responsibility in the core Nix ecosystem. This continues an effort from the UX workshop a year ago, and is another attempt to get some overview and eventually find bottlenecks.
Mermaid source
mindmap
Ecosystem
Nix
(installer)
Bash
Rust["Rust (experimental)"]
(store)
persistence layer
database
hashing
store paths
(derivations)
sandbox
store derivations
(daemon)
daemon protocol
worker protocol
scheduler
(evaluator)
parser
builtins
(fetchers)
(configuration system)
(plugin system)
(CLI)
classic
new
(flakes)
lockfiles
(C API)
language
store
(tests)
unit tests
functional tests
NixOS integration tests
evaluator tests
(build infrastructure)
(release process)
release notes
continuous integration
Hydra interfaces
Nixpkgs distribution
(maintenance)
triaging
security patches
contributor relations
(documentation)
reference manual
man pages
help pages
contribution guide
Nixpkgs
(stdenv)
Bash
setup.sh
hooks
bootstrapping
cross compilation
(languages and frameworks)
trivial build helpers
testers
C/C++
Python
Rust
JavaScript
Haskell
Kernel
VM builders
lib
module system
testing
pkgs-lib
confguration
policy filters
overlays
systems
warnings
aliases
CI
Hydra
ofborg
(maintainance)
review process
nixpkgs-format
testing strategies
maintainers
commit access
nixpkgs-review
nixreview-tools for staging
release process
staging branches
update scripts
automatic updates
nix-update
r-ryantm
mergebot
GitHub labels
Matrix rooms
repology
(distribution)
meta fields
licenses
deprecation process
(security)
coordination in Matrix
upstream security vulnerability feeds
(documentation)
reference manual
nixdoc
nix-render-docs
contributor guides
NixOS
(installation)
nixos-install
nixos-enter
calamares
system image
netboot
kexec
direct boot
(modules)
graphical applications
desktop managers
window managers
networking
audio
security
programs
hardware support
services
(boot)
bootspec
bootloaders
generations
file systems
kernel modules
(systemd integration)
(VM tests)
(containers)
(maintenance)
meta fields
state migrations
(documentation)
reference manual
man configuration.nix
NixOS Wiki
(CLI)
nixos-install
nixos-rebuild
nixos-option
nixos-enter
(releases)
release notes
zero hydra failures
community
Discourse
nixos.org
nix.dev
NixOS Wiki
Matrix
NixCon
local events
extended ecosystem
Home Manager
nix-darwin
system-manager
nixos-hardware
nixos-anywhere
lanzaboote
DetSys installer
nix-index
NUR
noogle
colmena
flake-parts
I also tried to port this to graphviz so it could be augmented with URLs (merdmaid mind maps are still very limited), but the best layout I was able to create in limited time is not great.
graphviz source
```graphviz graph ecosystem { layout=sfdp; overlap=scale; pack=true; packmode=cluster; repulsiveforce=4; K=1; splines=polyline; node [shape=oval style=filled fillcolor=white]; node [fontsize=30 fillcolor=lightblue] "The Nix ecosystem"node [fontsize=20 fillcolor=green]
Nix
Nixpkgs
NixOS
community
“extended ecosystem”
“The Nix ecosystem” – {Nix Nixpkgs NixOS community “extended ecosystem”}
node [fontsize=10 fillcolor=yellow]
Nix – {
installer
store
derivations
daemon
evaluator
fetchers
“configuration system”
“plugin system”
CLI
flakes
“C API”
tests
“build infrastructure”
“Nix release process”
“Nix maintenance”
“Nix documentation”
}
installer – {“Bash installer” “Rust (experimental)”}
store – {“persistence layer” database hashing “store paths”}
derivations – {sandbox “store derivations”}
daemon – {“daemon protocol” “worker protocol” scheduler}
evaluator – {parser builtins}
CLI – {classic new}
flakes – lockfiles
“C API” – {language store}
tests – {“unit tests” “functional tests” “NixOS integration tests” “evaluator tests”}
“Nix release process” – {“Nix release notes” “continuous integration” “Hydra interfaces” “Nixpkgs distribution”}
“Nix maintenance” – {triaging “security patches” “contributor relations”}
“Nix documentation” – {“Nix reference manual” “man pages” “help pages” “Nix contribution guide”}
node [fillcolor=beige]
Nixpkgs – {
stdenv
“languages and frameworks”
lib
“pkgs-lib”
confguration
CI
“Nixpkgs maintainance”
distribution
“Nixpkgs security”
“Nixpkgs documentation”
}
stdenv – {Bash “setup.sh” hooks bootstrapping “cross compilation”}
“languages and frameworks” – {“trivial build helpers” testers “C/C++” Python Rust JavaScript Haskell Kernel “VM builders”}
lib – {“module system” testing}
confguration – {“policy filters” overlays systems warnings aliases}
CI – {Hydra ofborg}
“Nixpkgs maintainance” – {“review process” maintainers “commit access” “nixpkgs-review” “nixreview-tools for staging” “release process” “staging branches” “update scripts” “automatic updates” “GitHub labels” “Matrix rooms” repology}
“review process” – {“nixpkgs-format” “testing strategies”}
“automatic updates” – {“nix-update” “r-ryantm” mergebot}
distribution – {“package metadata” licenses “deprecation process”}
“Nixpkgs security” – {“coordination in Matrix” “upstream security vulnerability feeds”}
“Nixpkgs documentation” – {“Nixpkgs reference manual” nixdoc “nix-render-docs” “Nixpkgs contributor guides”}
node [fillcolor=red]
NixOS – {
installation
modules
boot
“systemd integration”
“VM tests”
containers
“NixOS maintenance”
“NixOS documentation”
“commands”
“NixOS releases”
}
installation – {“nixos-install” “nixos-enter” calamares “system image” netboot kexec “direct boot”}
modules – {“graphical applications” networking audio security programs “hardware support” services}
“graphical applications” – {“desktop managers” “window managers”}
boot – {bootspec bootloaders generations “file systems” “kernel modules”}
“NixOS maintenance” – {“meta fields” “state migrations”}
“NixOS documentation” – {“NixOS reference manual” “man configuration.nix” “NixOS Wiki”}
commands – {“nixos-install” “nixos-rebuild” “nixos-option” “nixos-enter”}
“NixOS releases” – {“release notes” “zero hydra failures”}
node [fillcolor=orange]
community – {Discourse “nixos.org” “nix.dev” “NixOS Wiki” Matrix NixCon “local events”}
node [ fillcolor=lightgreen]
“extended ecosystem” – {“Home Manager” “nix-darwin” “system-manager” “nixos-hardware” “nixos-anywhere” lanzaboote “DetSys installer” “nix-index” NUR noogle colmena “flake-parts”}
}