How to create a reproducible development environment?


I want to have a reproducible development environment using flakes for one of my projects, however I use a heavy IDE and I assume every developer would like to use their own. The same happens with a git pre-commit hook that I use, I assume other devs don’t want to execute my bash script in their machines or, they want to have their own pre-commit script.

The question is: how can I have a flake that allow me to have all what I want while other devs can have the minimum set of things when running nix develop? What is the best practice for scenarios like this?

Thank you in advance.

You could set up multiple devShells in one flake. Then each developer can run the shell appropriate for them.

I don’t know if it is the best practice, but it is the first idea that came to my mind. :smile:

1 Like

That’s indeed the way to go.

A personal pre-commit hook dont’ make too much sense to me.
However an option would be to source an additional script if it exists.
So you could have a general pre-commit hook and if a personal-pre-commit exists that gets executed as well.
At least I think that will work, I haven’t tested it, but we basically use this mechanism to provide an escape hatch for the .bashrc file which we provide but the users can provide extension in a specific directory.