I’m working on small nix flake to standardize the developer environments at my job.
What I’m still missing, however, is a way to clean up after leaving the shell. Some hook to call a shell script, when the shell is closed.
Is there something like this? I thought about wrapping the actual nix develop
call inside a bash script and waiting for nix to terminate, but that seems rather hacky.
In this case what I would recommend is to provide a command (perhaps inside that
nix develop
) that would set up all the images/services/data, and a second one to tear it down, and allow devs to run those commands themselves. This allows for more flexibility, e.g. multiplenix develop
shells of the same project, but only one does the stateful stuff, coming back to the same shell later in the day without waiting for the setup. Most importantly it would allow for easy clean-up if the shell is shutdown unexpectedly and doesn’t have time to clean up itself, e.g. SIGKILL or power loss. It can be as simple as usingwriteShellScriptBin
to string together commands (instead of doing it in the shellHook as you presumably are doing right now), or as complex and flexible as https://github.com/svanderburg/nix-processmgmt .Then, if you really want to automate it, you can simply add
your-setup-command
andtrap "your-cleanup-command" EXIT
to yourshellHook
.