specialArgs considered harmful
Summary
The article argues that using Nix's specialArgs to pass inputs through module evaluation is not portable and complicates sharing and reusing configurations. It walks through concrete examples demonstrating how missing external inputs can break setups, and then surveys approaches such as curried modules, importApply, and importApplyWithArgs to keep modules portable and debuggable. The piece also discusses deduplication, _module.args, and practical loader patterns to improve reliability in large Nix configurations.