mirror of
https://github.com/utdemir/nix-tree.git
synced 2024-09-11 14:55:44 +03:00
Interactively browse dependency graphs of Nix derivations.
Previously they were being evaluated in the background (or when they are forced when browsing the UI). Now we just force them to NF on startup, and show a progress bar. |
||
---|---|---|
.github/workflows | ||
nix | ||
src | ||
test | ||
.envrc | ||
.ghci | ||
.gitignore | ||
asciicast.sh | ||
CHANGELOG.md | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
format.sh | ||
LICENSE | ||
nix-tree.cabal | ||
README.md | ||
shell.nix |
nix-tree
Interactively browse dependency graphs of Nix derivations.
Installation
nix-tree
is on nixpkgs
since 20.09
, so just use your preferred method for adding packages to your system, eg:
nix-env -i nix-tree
To run the current development version:
nix-shell -p '(import (builtins.fetchTarball "https://github.com/utdemir/nix-tree/archive/main.tar.gz") {}).nix-tree' --run nix-tree
Or, if you use a Nix version with flake support:
nix run github:utdemir/nix-tree
Usage
$ nix-tree --help
Usage: nix-tree [paths...] [-h|--help] [--version]
Paths default to $HOME/.nix-profile and /var/run/current-system.
Keybindings:
hjkl/Arrow Keys : Navigate
w : Open why-depends mode
/ : Open search mode
s : Change sort order
y : Yank selected path to clipboard
? : Show help
q/Esc: : Quit / close modal
Glossary
- NAR Size: Size of the store path itself.
- Closure size: Total size of the store path and all its transitive dependencies.
- Added size: Size of the store path, and all its unique transitive dependencies. In other words, the cost of having that store path on top of all other paths. See issue #14 for a better explanation.
Tips
nix-build
prints built paths to stdout, which can be piped conveniently
with | xargs -o nix-tree
. Examples:
# Output of a local derivation
nix-build . --no-out-link | xargs -o nix-tree
# Build time dependencies (passing a `.drv` path)
nix-instantiate --no-out-link | xargs -o nix-tree
# Dependencies from shell.nix
nix-build shell.nix -A inputDerivation | xargs -o nix-tree
# All outputs of a derivation in nixpkgs:
nix-build '<nixpkgs>' -A openssl.all --no-out-link | xargs -o nix-tree
Contributing
All contributions, issues and feature requests are welcome.
To hack on it, simply run nix-shell
and use cabal
as usual. Please run ./format.sh
before sending a PR.