Nix Ecosystem Mind Map

@Eriim did I nice visualization about his nixos configs.

Isn’t generalized like my graphs, but is a good source of inspiration.

Eriim, would you mind taking some snapshots of your journey through wonderland?

Isn’t a problem, if you’re not a cartographer or nix specialist. I always think we are suffering from Nix incantation of Monad curse

It is said that there’s a curse with Monads… When you finally understand it, you’ll lose the ability to explain it to others.

And also:

A map is not the territory it represents, but, if it has a similar structure to the territory, which accounts for its usefulness.
— Alfred Korzybski, Science and Sanity, p. 58

metro/subway visualization of this

3 Likes

I appreciate the kind words!

I would love to take a stab at something like this, I make no guarantee I can approach the complexity of the beautiful ecosystem graphs that are above in this thread.

But I can certainly document my learning journey more thoroughly.

2 Likes

This mindmap (and the several simplified variations) have been very useful to me! Thank you very much for sharing. I didn’t know that people are writing books about nix/nixOS!

Something like this should definitely be part of the official documentation (though probably should be a minimal version, or in alternative, adynamic mindmap where the main nodes are initially closed and the user could open to explore more and more).

1 Like

Hint if you add tags to differentiate it from things unrelated to nix, I can add to blogs

Thanks for your feedback.

This site already has this feature in ‘presentation mode’, but is ugly. Try this one, click in first icon at top right

image

1 Like

I got some inspiration of Julia Evans post about flakes

Flakes Mid

Flakes Large

I just want to pack my code

1 Like

These look very nice. A slightly different take on presentation could be to fork the backend behind https://landscape.cncf.io/. This has recently been done by https://landscape.openssf.org/ and could be a useful addition at landscape.nix.dev or landscape.nixos.org.

2 Likes

I liked the idea, specially in the context of Ecosystem,

The CNCF version can be found here.

The data is just a long YAML file, easy to generate and accept PR.

We just need:

  1. Infrastructure, it uses Netlify by default, but I think can run elsewhere
  2. Define new-entries policy

Possible caveats:

  • Logos, most of our projects don’t have any
  • External data, they pull info from CrunchBase, is unlikely to they had data from Nix projects, and there are some data license. Maybe we should hide this kind of data in the fork.

Our initial data could be curate the immutableria.

Have we considered flowcharts or diagrams for explaining Flakes?

@Gwyn I’m trying.

I’d love to see yours flowcharts

1 Like

Hey Hugo! Thanks for pointing out this thread.

The post I created (the title you’re quoting) used someone else’s flowchart, so I deleted it after I read the rules. It looks like I need permission to share others’ photos, and I haven’t requested it yet.

With that said, you can go view the Flakes flowchart yourself in the nixflakes GitHub repository from erictossell (GitHub - erictossell/nixflakes: My nixdots, but flaked.). Eric provides a couple insightful diagrams that succinctly illustrate his configuration files, and I found his Flake diagram particularly useful. It helped me conceptualize Flakes in a way that I struggled with before.

2 Likes

@Eriim more feedbacks for you :clap:

1 Like

@hugosenari awesome work thanks!

1 Like

Crossposting here, the nixlang.wiki cluster can easily host this, so I deployed landscape2 Announcing nixlang.wiki - #50 by cafkafk

1 Like

Make a post about it to make it more visible,

Can you please make issues features of github enabled, so I can register small bugs like github link pointing to wrong project?

1 Like

Ohh, right, github doesn’t allow issues on forks. But we can post issues on GitHub - nixlang-wiki/nixos-landscape: The Landscape of NixOS and associated projects now.

I can make an announcement here on discourse, I just wanted to wait a little until we had a little more on the map… but maybe we announce it to get stuff on the map I guess.

I love this! @hugosenari

Minor nitpick, it’s Brian with an i not a y :wink:

Thanks, for enabling it =)

I’m trying to find time to add my contributions.

Domain offers still open… http://nixos.land

Pointed this to there, but they should be other thing: http://flakes.link http://flakes.store

Sorry, fixed. Thanks for your feedback.

Please help to add your link to landcape.

1 Like

I’m still had to move this to landscape, since there is more manageable and readable.
But for now a moved it to another mindmap to at least make the original one less confuse.

And obviously both mindmap and landscape are open for feedback, and inclusion requests.

1 Like

Unbiased evaluation of env management and pkg (python) tools
Anna-Lena Popkes


Isn’t directly Nix related, but packages manager related.

I liked the way she describes package management roles and the venn diagram with different ones.

Maybe we could use something similar, adding Nix and other non python specific tools like distro tools, home brew, etc. Maybe even docker can be viewed in this. Helping answer the famous: “how is different from docker?”

Also, I’m fan of diagrams :heart_eyes_cat:

There is also an presentation

2 Likes

Here I go again, this time with a Leaning Roadmap

My learning roadmap
Still have to complete.

It started as a meme

3 Likes

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