Nix Ecosystem Mind Map

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”}
}

2 Likes