There may come a time when you need to completely reset your Home-Manager configuration with Nix - whether it’s to clean up clutter, remove unnecessary packages, or refresh the nix store.

Fortunately, this process can be done quickly and easily with a single command.

If you find yourself needing to deactivate all of your packages and return Home-Manager to its default state, simply use the following command:

home-manager init --switch $(mktemp -d)

What Does This Command Do?

  • home-manager init –switch: This part of the command tells Home-Manager to initialize and apply a new configuration. The –switch flag applies the configuration immediately.

  • $(mktemp -d): This creates a temporary empty directory using the mktemp utility. By passing this directory to Home-Manager, it effectively applies a blank or default configuration, deactivating any installed packages or custom settings you had in place.

Why Reset Home-Manager?

Resetting your Home-Manager configuration can be helpful for various reasons:

  • Cleanup: It provides a clean slate by deactivating packages, which can help resolve conflicts, free up system resources, or aid in troubleshooting.

  • Nix Store Cleanup: If you’re planning to clean the nix store, resetting your configuration can help reduce the number of references to unused packages.

  • Testing: You may want to experiment with new configurations in a pristine environment without interference from existing packages.

After running the command, you’ll be back to an initial, empty configuration, allowing you to start fresh.