Nix GUI. Visualizing Nix store and scope
2019-10-26, 11:25–11:30, Open Space

To me, Nix is "simple but unobvious". It is competing with software management systems which have much less non-obviousness in-house, instead making managed systems obscure (e. g. monolithic OSTree filesystem vs. structured and queryable Nix store). I believe that Nix would benefit from GUI tools dealing with lack of obviousness: scope browser (perhaps available in form of plugin for text/source code editor to assist with editing nix lang source), store browser. I've recently started a personal project of such a tool, beginning with the store visualization. General idea is "make system easy to understand, not easy to use without understanding".


My WIP Nix GUI, written in Python with Qt and bindings to some code from libnixutils, currently has:
- store dependency tree view with selector allowing to choose system or user's profile as a tree root, build hashes visualized with identicons
- contents view, exposing what's "borrowed" from dependencies via symlinks
- derivation and summary views

Planned:
- "diff" mode, displaying what has changed between generations of a profile
- scope view, with comparison of what's available in scope against what's installed in a profile
- source code editor plugin to pick attribute names from scope view
- source code editor plugin to display in-place reference about selected attributes
- tool for editing environment.systemPackages and managing user's profile in "aptitude way"