this post was submitted on 24 Jan 2025
12 points (100.0% liked)

Nix / NixOS

2295 readers
4 users here now

Main links

Videos

founded 2 years ago
MODERATORS
 

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.

top 5 comments
sorted by: hot top controversial new old
[–] onlinepersona@programming.dev 4 points 4 months ago (1 children)

If I'm not mistaken, everything in nix uses bash. So you should be able to use trap to catch the EXIT signal and execute a cleanup script. Here's a guide

Anti Commercial-AI license

[–] rutrum@lm.paradisus.day 4 points 4 months ago

Id never heard of trap. This is awesome! Thank you for sharing

[–] Sickday@kbin.earth 3 points 4 months ago

Sounds like the perfect use case for devenv. I use it in a handful of personal projects and it's proved to be very useful when swapping projects especially when they require multiple services (eg. postgres, redis, nginx, etc.)

It can be setup as a flake that you can use with nix develop.

There's options to start services and you can use scripts if you want some easy ways to tear down environments while in the devenv shell.

Hope this helps.

[–] paperd@lemmy.zip 2 points 4 months ago (1 children)

But why? This only seems practical if people are using the environment once. Otherwise you're just wasting a lot of bandwidth downloading dependencies over and over.

You should really just set up nix garbage collection to run once a week or something and be done with it.

[–] leisesprecher@feddit.org 1 points 4 months ago

I'm not talking about deleting anything nix related or downloadable, but development artifacts. Running Docker images, temporary data, services that were started during the development, etc.

That is the opposite of using it once, but using it multiple times a day, because developers often need to switch projects.