Analysis updated 2026-05-18
Find out why nix-collect-garbage keeps freeing almost no disk space.
See which old direnv projects are still holding gigabytes of Nix store data.
Delete old build results and stale profile generations safely, with confirmation.
Export the full GC root inventory as JSON to feed into your own cleanup scripts.
| applicative-systems/gcan | adindazu/ultimatevocal | ataraxy-labs/lazydiff | |
|---|---|---|---|
| Stars | 18 | 18 | 18 |
| Language | Rust | Rust | Rust |
| Setup difficulty | easy | moderate | easy |
| Complexity | 2/5 | 2/5 | 2/5 |
| Audience | ops devops | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires an existing Nix installation, it has nothing to scan without one.
Nix is a package manager that stores everything it installs in a special folder called the Nix store. Over time this folder can grow to take up many gigabytes of disk space. Nix has a built-in garbage collection command to clean it up, but it often frees very little because things called GC roots are holding onto data. A GC root is any pointer that tells Nix to keep something: a symlink left over from a build, a directory-specific environment managed by a tool called direnv, an old version of your installed software profile, and so on. gcan (pronounced like the question "g-can") is a tool that shows you all these GC roots sorted by how much disk space each one is actually keeping alive. This is different from how large the root itself is: a tiny symlink can pin a 5 GB dependency tree. The tool shows you the true cost of each root, where it lives on disk, and how old it is, so you can make informed decisions about what to remove. The tool has three modes. The list command prints a table of roots you can safely delete, with options to filter by minimum size and minimum age. The delete command removes roots that match filters you specify, optionally running garbage collection afterward to actually reclaim the disk space. The tui command opens a full-screen keyboard-driven interface where you can browse, sort, and delete roots interactively without typing repeated commands. For projects using direnv, which creates per-project Nix environments, gcan groups all the roots from the same project directory into one line so you see the total cost per project rather than dozens of individual cryptic hashes. The tool is designed to be safe by default. It never offers to delete system roots, the currently running system generation, or anything root-owned. Deletions through the interactive interface and the delete command both ask for confirmation first. JSON output and plain path output are available for use in scripts. The project is built in Rust, released under the MIT license, and developed by Applicative Systems.
gcan finds what is quietly pinning gigabytes in your Nix store and lets you review, sort, and safely delete those roots from the command line or a TUI.
Mainly Rust. The stack also includes Rust.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
Verify against the repo before relying on details.