nix

Find out where your disk went.

Then get it back, with a figure you can hold the tool to. nix is a storage manager for Linux that measures what it is about to delete, and tells you when it cannot promise the space will come back.

One package on the machine this was built on, measured three ways
Its own package manager claims
96.3 MB
Its files actually contain
76.1 MB
The disk has actually committed
181.3 MB

Only the last one is what removing it gives you back. It is 85 MB more than the package manager reports, because 30,547 small files each cost a whole block. nix shows you that figure, and says so when it is an estimate.

What it does

Shows you the disk

A scan that attributes every byte to something, down a tree you can walk. Sizes are what the filesystem has committed, not what the files claim to contain.

Reclaims it, on your say-so

Caches, logs, superseded packages, old kernels, build output, container images. You see every item and what losing it costs before anything is touched.

Watches the machine

CPU, memory, disks, network, temperatures and battery, sampled only while you are looking. Close the window and it stops.

Manages what is installed

Packages, services and timers, startup entries, software sources and the hosts file, each read from the system rather than guessed at.

What it will not do

Numbers it is held to

Each of these is asserted by a test that fails the build when it regresses. Measured on the machine nix was written on, an eight-core desktop running Ubuntu 22.04.

Measured Result Ceiling
Subprocesses spawned while monitoring 0 none permitted
Processor used with the monitor open 0.75% of one core 1%
Memory held after a full scan 45.7 MiB 150 MB
Time to read a file while scanning 4.65 µs 10 µs
Time to list 757 system services 11.7 ms 500 ms

The first row is the one worth explaining: nix reads the kernel's own interfaces directly, so nothing is launched on a timer to sample your machine. Listing those services takes one call rather than 1,515 of them.

Install

Version 0.2.0, for x86-64 Linux. Built on Ubuntu 22.04, so it runs on that and anything newer.

Debian, Ubuntu and derivatives

sudo apt install ./nix_0.2.0_amd64.deb

Fedora and RPM distributions

sudo dnf install ./nix-0.2.0-1.x86_64.rpm

Arch, from source

makepkg -si

The .deb and .rpm install a small privileged helper and its polkit policy, which is what lets nix reclaim system space. An AppImage is also published, but polkit identifies a program by its absolute path and an AppImage does not have a fixed one, so privileged features report themselves unavailable there rather than failing when you try to use them.

Where it is up to

nix is not 1.0 yet. Everything above is built and tested, and some of it has been tested only against the machine it was written on: the package backends for Fedora, openSUSE and Arch are written to documented output and have never met a real installation of those systems, and the operations that delete system files have never run as root outside a test. Those are listed, one by one, with what is missing.

Every defect found while building it is written down too, what it was, how it surfaced, and what now stops it recurring. There are seventy-one of them.

Read the defect log Read the specification