[[!img media/nixos-lores.png alt="" style="float: right"]] [[!meta date="2014-05-31 16:01"]] [[!tag nixos linux packagemanager usability]] [[!summary nix-build-view is a graphical frontend for nix-build, to visualize parallel execution of downloads and builds, taking place when doing nixos-rebuild for example.]] # motivation **nix-build-view is a graphical frontend for nix-build, to visualize parallel execution of downloads and builds, taking place when doing nixos-rebuild for example.** i've been working on nix-build-view a lot and this is the first preview of my work. if you like/dislike my work please let me know using email to js@lastlog.de. you can find my work at [1]. [[!img media/nix-build-view.jpeg size=700x alt="" style="float: none" caption="nix-build-view visualizing nix-build"]] # looking back **this project was born on FOSDEM14 when i was talking to niksnut and iElectric and was motivated by the quality of Gentoo tools in regards to usability.** originally i did not want to use ncurses because of its C-nature i despise. but after hacking several prototypes i concluded it can't just be done NOT using ncurses since NIX is running on linux, mac os x and other posix systems and they might have different terminals. **anyway, an interesting finding was that a terminal is like viewing a richt text document with a given resolution to render to. however, it is very limited and one cannot navigate the cursor in the document like one would expect of a DOM-tree nowadays. it is more like a 1980...** one thing that hurts is how string and color processing is done both in a normal terminal and using ncurses. both do NOT have a notion of colored text, this has to be composed by the application developers. this was the primary reason i created AdvancedString and AdvancedStringContainer [2]. i've also added a list of unit tests for AdvancedString, see [3]. # current state the current implementation of nix-build-view/ is a RFC (not in the classical sense though). if you think i've been missing something please let me know. nix-shell -p cmake -p clang -p ncurses git clone https://github.com/qknight/nix-build-view/ cd nix-build-view//nix-build-view mkdir build cd build cmake .. make ./nix-build-view currently i'm emulating nix-build but the next thing is to connect nix-build-view to nix-build either by integrating nix-build-view into nix-build or by using some form of message passing. i'm not sure yet how to go on. there are known issues and i've listed a lot of them in the code itself using the keyword 'FIXME'. # TODOs the good news is that nix-build-view is nearly done and that i will integrate nix-build-view into nixos soon. some open points at this time are: * **reduce the amount of update() calls** from FetchWidgetManager/BuildWidgetManager * **make rendering more effiction** by adding caching * **fixing all FIXMEs** in the code * **integrate nix-build-view** into nix-build or attach it using message passing # summary my goal was to have a tool equal to **htop** in quality. i'm sure nix-build-view will be very helpful and many NixOS devs already had great interest in nix-build-view. i'll keep you posted about usability updates in NixOS of which i think we need to address! # links * [1] * [2] * [3]