But it’s not a unified interface. Now, for my already extra-niche project that I might forever be the only user anyway, I have to add another requirement for any other users that would like to use it, and explain why things are different then in their existing flake, and how most of the existing documentation and examples they find online are not matching.
I wholeheartedly agree. I wish this was integrated into flakes. Then it would be unified interface, and some things that looks like a duct tape for parts don’t fit well might not be necessary. If there’s an issue I can and voice support I’m happy to do so.
I really don’t like how the system is handled in flakes, but
flake-utils is simple and gets the job done, without being a heavy “grand total unified framework” that one needs to buy into.
flake-parts are built-into Flakes or are de facto standard that everybody uses anyway, I’ll happily use them myself.
I don’t find it appealing at all. First - how many projects like that actually are there. Second without grand-unified-module-system, the user can still use
Flakebox and add the Haskell specific rules and hooks if so they desire. It’s not going to be that much work, so complicating everything for some minority of users who have a decent solution seems like a bad tradeoff.
Again - I believe extensibility sounds great on paper, but breaks down quickly if used too heavily. That problem is visible in coding editor space. Over and over there are project who think “let’s build a extendable framework for text editing and then people can write plugins they need”. But in practice this leads to having to maintain 500 lines of configs just to get basic things working well, tons of engineering overhead figuring out how to let these plugins not break each other all the time, and still having to deal with weird bugs and crappy (unintegrated) user experience.
Part of the reason why I’m using Helix over Neovim. Helix has all heavy, well integrated core and most of the things built in, and once it does have extendeability via plugins I’m only going to need a handful most useful ones.
Same with Flakebox - I don’t want to solve a large category of problems, but only a small scope problem. You have a Rust project, you add one input, you’re done. If you don’t like certain detail, the module system is there to help you turn it off/change it. But it’s supposed to be an exception, not a requirement. You don’t have too look through a list of modules and enable anything.
Also - its not a framework. It’s a library. I don’t like frameworks. (framework - you give it things and it calls them, so it’s in control; library - you call and use it as you please, you’re in control). Module system in Flakebox is an implementation detail to help you customize it, not something dictating how you need to do stuff outside of what Flakebox is doing.