(started as a response during a private conversation about how using multiple languages could get confusing or overly complex, when discussing how Nix is used as a general purpose configuration language)
So the more I gained experience with Nix, the more I started to personally feel that the main issue was (a lack of) clean boundaries. So I do think there is room for multiple languages, but the key is to be consistant in what they are used for. From that perspective I think there is room for a few different languages. Something like:
- nix as a DSL for packaging (not config)
- some actual programming language for config (because I despise yaml templating)
- Nickel: still doesn't really have a "killer-app" to demonstrate its value, but on the surface it seems promising
- Dhall: I actually love that dhall is not turing complete. If its type system wasn't so damn rigid, it would be my preferred choice here, but unfortunately that is not the case
- Cue: it seems like cue is starting to win this batt