Adding an AI-driven abstraction layer on top of an already complex system is the definition of over-engineering.
Here is a breakdown of why AI makes the "Over-Engineering Trap" significantly more dangerous:
In the past, over-engineering was limited by human time. If an engineer wanted to build a hyper-complex, multi-layered abstraction for a simple task, it took weeks of effort. That "friction" served as a natural brake.
AI removes that brake. If an AI can generate a complex, 500-line Nix derivation in three seconds, engineers will use it. We are moving into an era where the cost of creating complexity is near zero, but the cost of maintaining it remains high. We will end up with "Software Skyscrapers" built by AI that no human actually knows how to repair.
Good engineering relies on a human being having a clear mental model of how a system works. When you write a script, you understand the logic. When an AI "synthesizes" a Nix expression based on your "intent," the engineer no longer understands the how, only the what.
When that system inevitably breaks (and it will, because hardware is messy), the engineer is left staring at a "black box" of AI-generated code. You cannot debug what you didn't author. This leads to "Cargo Cult Engineering," where teams keep the AI-generated infrastructure because they are too afraid to touch it and break it.
AI is very good at finding a path to a solution, but it isn't always the simplest or most maintainable path.
Because the AI solution "works" immediately, the engineer accepts it. Over time, the codebase becomes a graveyard of "smart" hacks that were too complex to ever be refactored.
Every layer of abstraction (Nix $\rightarrow$ AI Layer $\rightarrow$ Hardware) adds what I call an Abstraction Tax.
By the time you find the root cause, you've spent hours navigating through layers of "convenience" that were actually just obstacles.
To prevent AI from making over-engineering worse, the goal should not be "AI as a Generator," but "AI as a Simplifier."
The goal of engineering should be to reduce complexity, not to manage it. AI should be used as a tool to strip away the "mess," not to build more "layers."