AboutServicesProjectsBlog
Blog
Recovering disk space in NixOS

Recovering disk space in NixOS

SoftwareNixOS
2020-5-7

My nixos partition has filled up, here are some steps to recover

a terminal window showing the root of a linux tree with file sizes of each directory
NCDU command line size browser

This unix.stackexchange post directed me to the ncdu utility which allows quick diving into which directories are taking up space. Here are some solutions found to help clear out unused diskspace

Clear out log files

Starting position:

$ df -h
/dev/nvme0n1p6  107G  100G  2.3G  98% /

Konsole history files were stored in /tmp/konsole-xxxxxx.history. As I no longer use konsole:

$ rm /tmp/konsole-*.history

Systemd journal /var/log/journal is taking up 4.0gb of space, which seems like a specific amount. The arch wiki clarifies that as intentional.

Since I will not be diving deep into the past on this system let's reduce that to 2.0Gb. Normally this is done in /etc/systemd/journald.conf but because NixOS:

configuration.nix

    services.journald.extraConfig = ''
        SystemMaxUse=2G
    '';

And after a nixos-rebuild switch it's down to 2G

Reducing /nix

Since nix tends to accumulate old packages there is documentation around its garbage collector.

Let's get a baseline size for nix - 24.1 GiB

nix-env --delete-generations old
nix-collect-garbage
sudo nix-collect-garbage

We're down to 19.1 GiB

Let's do a full rebuild and make sure we're as compact as possible. Note that this removes old generations, make sure your system is stable first.

nix-channel --update
sudo nix-channel --update
sudo rm /nix/var/nix/gcroots/auto/*
nix-collect-garbage -d
sudo nix-collect-garbage -d

Down to 9.4 GiB

By hardlinking identical files we can save some additional space:

sudo nix-store --optimize

Now we're down to a nice trim 9.0 GiB - a savings of 15.1 GiB at the cost of losing some history.

Note that any shells you have will have to be rebuilt or refetched.

Pruning docker

I use docker for application development, this was done before but can save considerable space:

docker system prune

Note that this will delete a whole bunch of stuff, if you have any data not stored in volumes it will be lost.

Clearing your .cache folder

My .cache folder stands at 9.9 GiB

The highest amount is currently spotify. By editing ~/.config/spotify/prefs and adding:

storage.size=2048

then restarting spotify it will trim down its storage.

Next up is yarn.

yarn cache clean

saves me another 2.1 GiB

~/.local/share/Trash has considerable data in it, which after quick verification doesn't have anything I care about.

rm -rf ~/.local/share/Trash/files/*
rm -rf ~/.local/share/Trash/files/.*

After this I spent a bit poking around in ncdu and deleting old projects and forks that were not longer used.

Results

$ du -h
/dev/nvme0n1p6  107G   67G   35G  66% /

That should keep me going a bit longer

Featured Projects
GeneratorHandwheel Repair
Company Info
About UsContactAffiliate DisclosurePrivacy Policy
Specific Solutions LLC
Portland, OR