utdemir / nix-tree

Interactively browse dependency graphs of Nix derivations.
BSD 3-Clause "New" or "Revised" License
766 stars 14 forks source link

Feature request: Hide a closure from search results #51

Open RileyApeldoorn opened 1 year ago

RileyApeldoorn commented 1 year ago

Hey there! I sometimes use nix-tree to solve issues with duplicate Python dependencies, and it can be quite hard to keep track of which specific versions of a dependency I've already checked out (especially if there are many different versions in the closure).

It would be great if there was a keybind to hide/"cross out" the currently selected closure for the remainder of the session (or perhaps until restored through a keybind) so that it or anything it closes over does not show up in search results anymore. That would really help a lot!

utdemir commented 1 year ago

Ooh, this is interesting. Thanks for bringing this up :).

First, here's another issue with a vaguely similar concern that this functionality might also help: https://github.com/utdemir/nix-tree/issues/29

Here's what I am thinking right now:

It would be great if there was a keybind to hide/"cross out" the currently selected closure for the remainder of the session

I'd be against hiding things as I feel like it would be too easy to trigger it mistakenly which would cause the program to show "incorrect" results for the rest of the session. But "Crossing out" is interesting. I can see how it would be useful.

I also initially thought it might even be more possible to implement it as a "flag" feature where you could mark things with their dependencies with differently coloured flags. So it would also be possible to have common transitive dependencies showing both of the flags. And we can show the flags everywhere we show a store path (why depends, search etc.).

Both for the "crossing out" and "flags", we'd need to think about a good UX. As:


I'll sleep on it for a bit, but I do think this will be a useful addition. "Marking something alongside with all their transitive deps" seems like a useful thing to be able to do. But I want to think more about it and find other use cases to see if it is generally useful.