utdemir/nix-tree
{ "createdAt": "2020-06-24T22:41:51Z", "defaultBranch": "main", "description": "Interactively browse dependency graphs of Nix derivations.", "fullName": "utdemir/nix-tree", "homepage": "", "language": "Haskell", "name": "nix-tree", "pushedAt": "2025-11-01T00:31:43Z", "stargazersCount": 941, "topics": [ "dependency-graph", "hacktoberfest", "nix" ], "updatedAt": "2025-11-25T14:05:53Z", "url": "https://github.com/utdemir/nix-tree"}nix-tree
Section titled “nix-tree”Interactively browse dependency graphs of Nix derivations.
Installation
Section titled “Installation”nix-tree is on nixpkgs since 20.09, so just use your preferred method for adding packages to your system, eg:
nix-env -iA nix-treeOr, for flake enabled systems:
nix profile install 'nixpkgs#nix-tree'To run the current development version:
nix run github:utdemir/nix-tree -- --help$ nix-tree --helpUsage: nix-tree [INSTALLABLE] [--store STORE] [--file FILE] [--version] [--derivation] [--impure] [--dot]
Interactively browse dependency graphs of Nix derivations.
Available options: INSTALLABLE A store path or a flake reference. Paths default to "~/.nix-profile" and "/var/run/current-system" --store STORE The URL of the Nix store, e.g. "daemon" or "https://cache.nixos.org" See "nix help-stores" for supported store types and settings. --file FILE Interpret installables as attribute paths relative to the Nix expression stored in file. --version Show the nix-tree version --derivation Operate on the store derivation rather than its outputs --impure Allow access to mutable paths and repositories --dot Print the dependency graph in dot format -h,--help Show this help text
Keybindings: hjkl/Arrow Keys : Navigate w : Open why-depends modal / : Open search modal s : Change sort order y : Yank selected path to clipboard ? : Show help q/Esc : Quit / close modalGlossary
Section titled “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.
[issue #14] !: https://github.com/utdemir/nix-tree/issues/14
nix-build prints built paths to stdout, which can be piped conveniently
with | xargs -o nix-tree. Examples:
# Output of a local derivationnix-build . --no-out-link | xargs -o nix-tree
# Build time dependencies (passing a `.drv` path)nix-instantiate . | xargs -o nix-tree --derivation
# Dependencies from shell.nixnix-build shell.nix -A inputDerivation | xargs -o nix-tree
# All outputs of a derivation in nixpkgsnix-build '<nixpkgs>' -A openssl.all --no-out-link | xargs -o nix-treenix-tree also supports flake references:
# Build time dependencies of a flake on the current directorynix-tree --derivation '.#'
# Same thing works for any flake referencenix-tree --derivation 'nixpkgs#asciiquarium'Run nix-tree on your current nixos system:
nix-tree /nix/var/nix/profiles/systemRun nix-tree on a flake reference of a nixosConfiguration:
nix build --print-out-paths --no-link '.#nixosConfigurations.foo.config.system.build.toplevel'nix-tree '.#nixosConfigurations.foo.config.system.build.toplevel'Query the binary cache before download, with the --store option:
# Query the runtime dependency of `stellarium` (2 GiB closure) without downloadnix eval --raw 'nixpkgs#stellarium.outPath' | xargs -o nix-tree --store https://cache.nixos.orgFor valid --store options, see nix help-stores. For example,
# Build in a temporary chroot store and examine the outputnix build --store /tmp/chroot-store 'nixpkgs#hello' --print-out-paths | xargs -o nix-tree --store /tmp/chroot-storeContributing
Section titled “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.
Related tools
Section titled “Related tools”- nix-du: Visualise which gc-roots to delete to free some space in your nix store
- nix-melt: A ranger-like flake.lock viewer
- nix-query-tree-viewer: GTK viewer for the output of
nix-store --query --tree - nix-visualize: Uses the Nix package manager to visualize the dependencies of a given package